簡體   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