【问题标题】:Executing SSH with the Linux/Unix at command使用 Linux/Unix at 命令执行 SSH
【发布时间】:2017-09-12 19:57:51
【问题描述】:

我将此 ssh 调用放在我们的 Linux 机器上名为“tstz”的以下 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 不合适 ^[[2J与dc01nj2dwifdv02.nj.core.him的连接关闭。^M

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

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • /usr/bin/ssh -tt pmcmds ${fl} ${wf} /null >/tmp/test1.log 2>&1
  • 本地 shell 正在处理您的重定向。单引号或 dbl-quote 您需要在远程 shell 上执行的命令,因此它被视为远程 shell 的命令。祝你好运。
  • 我尝试了 'pmcmds DFD_ETIME wf_TESTa' 和 "pmcmds DFD_ETIME wf_TESTa" 没有 -tt 选项,当我使用 -tt 时,ssh 命令仍然在启动远程命令后立即退出。跨度>

标签: linux shell ssh


【解决方案1】:

据我了解,您需要在成功连接到服务器后指定要在远程机器上执行的命令,而不是在本地机器上执行。

我使用以下命令

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"'  

附:我在谷歌上发现了一个有趣的服务,叫做“explainshell” 这帮助我理解了那个“命令”;关键字在引号内至关重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多