多个ssh登录/注销

时间:2012-07-10 13:55:40

标签: linux bash unix ssh

我正在处理ssh,我的任务是在非交互式(?)模式下多次登录到另一个控制台,所以我专门以这种模式登录机器,我必须输入CTRL-D才能注销,并且这个操作重复了。

 #!/bin/bash  
for i in `seq 100`  
do  
ssh test@macintel  
sleep 1  
done  

有什么办法让我不必手动输入CTRL-D来退出吗?

运行ssh test@macintel './command.sh'之类的任何命令对我都不起作用。

我想通过它的PID来杀死它,或者用一些文件描述符调用它但我仍然通过调用的ssh连接阻止我的本地会话。

4 个答案:

答案 0 :(得分:1)

ssh -l root 192.168.22.250 -C "./command.sh"

使用-C选项传递您希望在远程计算机上执行的命令

答案 1 :(得分:1)

未经测试,但将macintel上的默认shell更改为注销,以便您在登录后立即注销:

sudo chmod -s logout test

该命令必须在macintel上以root身份运行,因为注销不是标准shell。

答案 2 :(得分:0)

这适用于redhat box:

#!/bin/bash
for i in seq 100
do
ssh user@server "/path/command.sh;exit"
done

答案 3 :(得分:0)

根据ssh -vv登录这里调用的内容 如果ssh的ssh -vv root@host "command;exit"输出显示:

debug1: Sending command: command;exit
debug2: channel 0: request exec confirm 1
...
debug2: exec request accepted on channel 0

而调用ssh -v root@host 输出:

debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
...
debug2: shell request accepted on channel 0
Last login: Wed Jul 11 09:11:22 2012 from 192.168.11.2

所以看起来我需要在ssh日志记录时调用“shell”。

@chepner:您的解决方案似乎没问题,但我无法以这种方式更改帐户设置。无论如何,谢谢你的想法。