我将这个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,它会按预期运行。
任何帮助都会受到高度赞赏。谢谢!
答案 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”的有趣服务 这让我明白了“命令”;关键字在引号内至关重要。