Он должен работать, если вы укажете shebang в скрипте groovyrun
.
В качестве быстрого эксперимента создайте shell1
, содержащий
#!/bin/sh
echo shell1: "$@"
sh "$@"
и shell2
, содержащий
#!/.../shell1
echo shell2: "$@"
(с правильным путем к shell1
); запуск shell2 Hello
затем производит
shell1: ./shell2 Hello
shell2: Hello
Как видите, параметры, переданные каждому скрипту, выглядят правильно в обоих случаях.
Необходимо использовать expect
(или аналогичный, например, Expect. pm
, или даже модуль Net::SSH
от perl... или модуль python pexpect
, если вы предпочитаете python) на вашем сервере Ubuntu для:
Если у вас есть ключ для аутентификации в промежуточной системе BusyBox и вам нужен пароль для конечной системы, просто вызовите sshpass
на исходной системе Ubuntu, и вызовите ssh -t
для достижения системы BusyBox, чтобы был терминал для внутренней команды ssh
, чтобы прочитать ее пароль.
sshpass -p modempassword ssh -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Если вам также нужен пароль для системы BusyBox, вам придется дважды вызвать sshpass
.
sshpass -p busyboxpassword sshpass -p modempassword ssh -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Если по какой-то причине у вас возникли проблемы с настройкой соединения, вы можете сделать это в два шага:
Откройте мастер-соединение к системе BusyBox. Это требует поддержки только на клиенте, на сервере нет ничего особенного.
sshpass -p busyboxpassword ssh -o ControlMaster=auto -f busybox@xx.xx.xx.x sleep 99999999999
Используйте подчиненное соединение с системой BusyBox, чтобы открыть соединение с модемом.
sshpass -p modempassword ssh -o ControlMaster=auto -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Когда вы закончите, закройте соединение с мастером с помощью
ssh -O exit busybox@xx.xx.xx.xx