退出SSH后Bash脚本退出

时间:2015-07-23 19:05:08

标签: bash ssh

我试图编写一个Bash脚本,该脚本登录到2个不同的基于Linux的电源条(Ubiquiti Mpower Pros)并关闭2个不同的灯(每个条带上一个)。为此,我登录到第一个条带,将相应的文件更改为0(从而关闭灯光),然后退出,在下一个电源条上重复相同的过程。但是,在退出第一个SSH连接后,脚本停止工作。有人可以建议修复吗?我唯一的想法是将这个脚本包含在python程序中。这是我的代码:

#!/bin/bash
ssh User@192.168.0.100
echo "0" > /proc/power/relay1
exit
# hits the enter key
cat <(echo "") | <command>

ssh User@192.168.0.103
echo "logged in"
echo "0" > /proc/power/relay1
exit
cat <(echo "") | <command>

2 个答案:

答案 0 :(得分:4)

ssh作为应用程序BLOCKS在运行时,echoexit由本地shell执行,而不是由远程机器执行。所以你在做:

  1. ssh到远程机器
  2. 退出远程shell
  3. echo local
  4. 本地退出
  5. 繁荣,你的剧本已经死了。如果应该在远程系统上运行echo / exit,那么你应该这样做:

    ssh user@host command
                   ^^^^^---executed on the remote machine
    

    e.g。

    ssh foo@bar 'echo ... ; exit'
    

答案 1 :(得分:2)

您显然试图通过ssh运行的命令实际上是在本地执行的。您只需将要运行的命令传递给ssh,它就可以执行此操作(无需显式exit

ssh User@192.168.0.110 'echo "0" > /proc/power/relay1'

会这样做,类似于其他ssh命令