Команда ssh не запускается изнутри скрипта bash, но запускается из оболочки.
Я создал простой скрипт, и он показывает, что команда ssh завершается неудачно до того, как достигает удаленной машины.
Вывод оболочки показывает следующее:
- Удаленный компьютер работает
- Сценарий находится на локальном хосте, а команда ssh находится в функции с именем doit
- Выполнение сценария возвращает ошибку в строке 5 (строка с командой ssh): «Нет такого файла или каталога»
- Скопируйте и вставьте команду ssh в оболочку, нажмите Enter, она выполняется и достигает удаленного компьютера, что возвращает и выдает ошибку, поскольку ключ не настроен (ожидается)
Вывод из оболочки:
~ $ nping -c 1 104.248.173.32
Starting Nping 0.7.01 ( https://nmap.org/nping ) at 2019-04-23 22:04 ICT
libnsock mksock_bind_addr(): Bind to 0.0.0.0:0 failed (IOD #1): Invalid argument (22)
SENT (0.0016s) Starting TCP Handshake > 104.248.173.32:80
RECV (0.0017s) Handshake with 104.248.173.32:80 completed
Max rtt: 0.177ms | Min rtt: 0.177ms | Avg rtt: 0.177ms
TCP connection attempts: 1 | Successful connections: 1 | Failed: 0 (0.00%)
Nping done: 1 IP address pinged in 0.00 seconds
~ $ cat /tmp/test.sh
#!/usr/bin/env bash
function doit() {
RUN="/usr/bin/ssh -o BatchMode=yes -o ConnectTimeout=3 root@104.248.173.32 hostname"
"$RUN"
echo "RESULT: $?"
}
doit
~ $ /tmp/test.sh
/tmp/test.sh: line 5: /usr/bin/ssh -o BatchMode=yes -o ConnectTimeout=3 root@104.248.173.32 hostname: No such file or directory
RESULT: 127
~ $ /usr/bin/ssh -o BatchMode=yes -o ConnectTimeout=3 root@104.248.173.32 hostname
Host key verification failed.
~ $ echo $?
255
Я ожидал, что команда ssh в сценарии попытается запустить имя хоста на удаленном компьютере, и на удаленном компьютере произойдет ошибка, поскольку ключ не настроен.
На самом деле произошло то, что команда ssh в сценарии не выполнялась, поскольку произошла ошибка «Нет такого файла или каталога».
Почему я вижу ошибку «Нет такого файла или каталога», когда команда ssh запускается из скрипта, даже если скрипт есть, есть ssh и есть удаленный компьютер?