繁体   English   中英

从后台脚本运行SSH

[英]Running SSH from a background script

我正在Linux上从调用脚本运行SSH,该脚本在执行后便移至后台。

SSH命令在远程win 10服务器上执行批处理命令。
调用脚本中的语法为: chkval=$(SSH domain\\remotehost cmd arg2 arg2)

只要我在前台运行脚本,此命令就可以从命令行运行,也可以从调用脚本运行,但是一旦将脚本放到后台或将其交给“ at”以执行计划的exec,SSH命令就会失败,并显示“更多令牌预期”错误。

该脚本不会死,SSH调用也不会死,但它永远不会执行远程命令。

可以使用-N -f标志来实现。 来自man ssh

-f:请求ssh在执行命令之前进入后台。 如果ssh要求输入密码或密码短语,但用户希望在后台输入密码或密码,则此功能很有用。 这意味着-n。 建议在远程站点上启动X11程序的方法是使用ssh -f host xterm之类的方法。 如果ExitOnForwardFailure配置选项设置为“ yes”,则以-f开头的客户端将等待所有远程端口转发成功建立,然后再将其置于后台。

-N:不执行远程命令。 这对于仅转发端口(仅协议版本2)很有用。

Y留下示例脚本。 首先,您需要客户端/服务器身份验证是基于密钥的,因为您不需要输入用户/密码

#!/bin/bash
dst_machine_ip="192.168.0.100"
ssh  -Nf $dst_machine_ip

# Here goes your remote commands
ls
date
# Exit
ssh -O exit $dst_machine_ip

您可以直接在后台执行此脚本

nohup ./script.sh &

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM