ssh运行命令,中间跳一次- ubuntu

6tqwzwtp  于 2022-11-28  发布在  其他
关注(0)|答案(1)|浏览(541)

我当前正在从sh文件运行以下命令,该命令检查文件是否存在并读取响应:

sshpass -p "$PASS" ssh -t $USER@$IP 'echo '$PASS' | sudo -S [ -d /myFile ]' && echo "INFO: already exists /myFile, continue? [Y/n]" && read RESULT

现在我需要做同样的事情,但中间有另一个设备。所以我有:
我的计算机-〉设备_1-〉设备_2
设备_1:IP_1USER_1PASS_1;设备_2:IP_2USER_2PASS_2
因此,我希望能够直接从myComputer到Device_2执行相同的操作。日志记录必须是自动的,而不需要输入密码。
注意事项:
我不知道这是否有用,但我可以运行以下命令直接连接到Device_2:

env SSHPASS="$PASS_2" \
  sshpass -d 123 ssh \
    -o ProxyCommand="sshpass -e ssh -W %h:%p $USER_2@$IP_2" \
  $USER_1@$IP_1 \
  123<<<$PASS_1

无论如何,这对我来说没有用,因为我不想连接到设备,我只想运行一个命令。

but5z9lq

but5z9lq1#

您可以链接ssh命令以连接到第二个设备。
使用ssh -t -t(或简称为ssh -tt)强制执行伪tty分配,即使stdin不是终端。
类似的东西应该会起作用:

sshpass -p "$PASS_DEVICE1" ssh -tt "$USER_DEVICE1"@"$IP_DEVICE1" <<EOF
sshpass -p "$PASS_DEVICE2" ssh -tt "$USER_DEVICE2"@"$IP_DEVICE2" <<EOD
echo '$PASS_DEVICE2' | sudo -S [ -d /myFile ] && echo "INFO: already exists /myFile, continue? [Y/n]" && read RESULT
EOD
EOF

相关问题