使用Linux / Unix at命令执行SSH

时间:2017-09-12 19:57:51

标签: linux shell ssh

我将这个ssh调用放在我们名为“tstz”的Linux机箱上的shell脚本中,然后使用linux“at”命令调用它,以便安排它以便以后执行。

tstz脚本:

#! /bin/ksh
/usr/bin/ssh -tt <remote windows server> pmcmds ${fl} ${wf} < /dev/null >/tmp/test1.log 2>&1

命令语法:

at -f tstz现在+ 1分钟

ssh调用按预期执行远程命令,但ssh连接在远程命令完成之前立即关闭。我需要连接保持打开状态,直到远程命令完成,然后将控制权返回到退出状态的tstz脚本。

这是我在/tmp/test1.log中遇到的错误:

tcgetattr:设备的ioctl不合适 ^ [[2JConnection to dc01nj2dwifdv02.nj.core.him关闭。^ M

注意:当使用“at”命令来安排tstz时,如果我不使用-tt,则ssh命令不会执行远程命令“pmcmds $ {fl} $ {wf}”。我相信这是因为需要终端。但是我可以在前台的Linux命令提示符下运行tstz而不在ssh命令行上运行-tt,它会按预期运行。

任何帮助都会受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,您需要在成功连接到服务器后指定要在REMOTE机器上执行的命令,而不是在LOCAL机器上。

我使用以下命令

ssh -i "key.pem"  ec2-user@ec2-XX-XX-XX-XX.us-west-2.compute.amazonaws.com  -t 'command; bash -l -c "sudo su"'     

你应该用你自己的命令替换“sudo su”,我想用“pmcmds DFD_ETIME wf_TESTa”

所以,尝试发布,也许

/usr/bin/ssh -tt <remote windows server> 'command; bash -l -c "pmcmds DFD_ETIME wf_TESTa"'  

P.S。我在google上发现了一个名为“explainhell”的有趣服务 这让我明白了“命令”;关键字在引号内至关重要。