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

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' 

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

  • Как автоматизировать подключение к нескольким сетевым устройствам, выполнить команду и сохранить вывод в файл?
  • «Ошибка совпадающего шифрования» в `rsync`
  • контролировать и смотреть несколько систем непрерывно
  • Как SSH через промежуточный сервер
  • openssh: если ssh добавляет ключи к агенту по мере необходимости
  • Используйте настольные динамики через SSH с ноутбука
  • Keychain SSH Key Manager предотвращает регистрацию SFTP на CentOS
  • Альтернатива Webmin, которая устанавливает и запускает клиентскую машину и обменивается данными через SSH
  • linux + ssh + выполняет две задачи в одном ssh и печатает в CSV
  • rsync bash скрипт "не удалось установить"
  • SSHD_CONFIG продолжает разлагаться при обратном настройке SSH
  • Linux и Unix - лучшая ОС в мире.