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

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

  • Как я могу войти в свой ноутбук с аутентификацией с открытым ключом?
  • Быстрое туннелирование ssh X в локальной защищенной сети
  • Копирование файлов с одного компьютера на другой без запроса пароля
  • Время соединения SSH для сервера через брандмауэр?
  • Отменить команду `mv`?
  • Ncurses over ssh - будут ли они отображаться?
  • Как остановить бесконечный запущенный процесс (ztail), запущенный сеансом ssh после закрытия этого сеанса
  • как удалить ssh предупреждение в сценарии оболочки
  • Подключиться к Linux-машине за брандмауэром
  • Включить ed25519 в Debian wheezy
  • VNC & SSH: локальный (win-putty) -> hop (linux) -> remote (linux)
  • X11 переадресация приложения OpenGL с компьютера, на котором установлена ​​карта NVIDIA, на машину с картой AMD
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.