我正在处理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连接阻止我的本地会话。
答案 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:您的解决方案似乎没问题,但我无法以这种方式更改帐户设置。无论如何,谢谢你的想法。