Как использовать ssh в функции (bash)?

Я пытаюсь выполнить несколько команд на сервере, войдя в систему, используя команду sshpass как sshpass ниже.

 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 

Поэтому вместо повторения sshpass каждый раз , я хотел бы поместить sshpass -p 'password' ssh ${SSH_ARGS} user@IP в качестве переменной или функции. Как это сделать?

Я пытался ::

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

и это ::

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

Я тоже пробовал это , но не работал.

Как я могу достичь этого вместо того, sshpass каждый раз повторять sshpass ?

То, что вы, похоже, ищете, – это alias :

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

Поэтому вы можете запускать свои команды следующим образом:

 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' 

Обратите внимание, что могут быть способы упростить вашу жизнь, добавив скрипты для выполнения этих повторяющихся задач, но это выходит за рамки этого вопроса.