Como usar o ssh em uma função (bash)?

0

Estou tentando executar alguns comandos em um servidor fazendo login usando o comando sshpass , como abaixo.

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo sed -i "/^server 0.rhel.pool.ntp.org/ { N; s/^server 0.rhel.pool.ntp.org\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo sed -i "/^#server 0.rhel.pool.ntp.org iburst/ { N; s/^#server 0.rhel.pool.ntp.org iburst\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'
echo "File /etc/ntp.conf is now edited"
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo cat /etc/ntp.conf | grep "server xxx.xx.xx.xx iburst"'
if [ $? = 0 ];
then
sshpass -p 'password' ssh ${SSH_ARGS} user@IP 'sudo service ntpd status;sudo service ntpd restart'
else
echo "File /etc/ntp.conf is not updated in IP"
fi

Então, em vez de repetir sshpass toda vez , gostaria de colocar sshpass -p 'password' ssh ${SSH_ARGS} user@IP como variável ou função. Como fazer isso?

Eu tentei ::

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpp='sshpass -p 'password' ssh ${SSH_ARGS} user@IP' 
$sshpp 'sudo service ntpd status'

e isto:

SSH_ARGS='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -q'
sshpp() {
sshpass -p 'password' ssh ${SSH_ARGS} user@IP' 
}
sshpp 'sudo service ntpd status'

Eu tentei isso também, mas não estou funcionando.

Como vou conseguir isso em vez de repetir sshpass todas as vezes?

    
por prado 04.01.2017 / 05:12

1 resposta

2

O que parece estar procurando é um alias :

alias sp='sshpass -p "password" ssh $SSH_ARGS user@IP'

Você pode, portanto, executar seus comandos como:

sp 'sudo sed -i "/^server 0.rhel.pool.ntp.org/ { N; s/^server 0.rhel.pool.ntp.org\n/server xxx.xx.xx.xx iburst\n&/ }" /etc/ntp.conf'

Note que pode haver maneiras de simplificar um pouco mais sua vida fazendo scripts para realizar essas tarefas repetitivas, mas isso está além do escopo desta questão.

    
por 04.01.2017 / 05:51