【问题标题】:Run command by ssh and 1 jump in the middle - ubuntu通过 ssh 运行命令并在中间跳转 1 - ubuntu
【发布时间】:2022-11-24 22:17:09
【问题描述】:

我目前正在从 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

所以我希望能够直接从我的计算机到设备 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

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

【问题讨论】:

  • 快速提示:使用 heredocs 而不是强制您的命令作为 oneliner 工作。我稍后会发布一个示例作为答案

标签: bash ubuntu ssh ssh-tunnel


【解决方案1】:

您可以链接 ssh 命令以连接到您的第二台设备。

类似的东西应该工作:

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

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2015-07-24
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2011-01-25
    • 2013-06-05
    相关资源
    最近更新 更多