Как использовать 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 ?

  • Вставить содержимое буфера обмена без X
  • Как регистрировать SSHD сбойные логины с именами пользователей в OpenBSD 5.3?
  • Хвост журнальных файлов на двух разных хостах
  • Sourcing .bashrc из ssh после удаления строки проверки строки
  • Как перемещать файлы между серверами с помощью проверки подлинности PubKey?
  • «Bind: Address уже используется» при создании моста в Linux для Windows
  • эквивалент xmodmap в bash
  • Установлено netstat означает, что кто-то ssh'd в мою машину
  • One Solution collect form web for “Как использовать ssh в функции (bash)?”

    То, что вы, похоже, ищете, – это 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' 

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

    Linux и Unix - лучшая ОС в мире.