2016-04-28 86 views
1

我無法運行位於具有參數的「admin」服務器上的遠程shell腳本。使用ssh參數運行遠程bash腳本

ssh [email protected] "~/bin/addautomaps $groupentry $homeentry $ticket" 

「groupentry」 和 「homeentry」 是如下

user1:*:52940:OWNER-user1 
user1  -rw,intr,hard,rsize=32768,wsize=32768 basinas01:/ifs/basinas01/home/& 

腳本位於在管理服務器〜/斌/ addautomaps。

我看到錯誤,

tput: No value for $TERM and no -T specified 

我也看到了同樣的參數不正確傳遞。 我也嘗試過使用「ssh -t ...」但這不起作用。

+0

試試這個: 'ssh koliwada @ admin script -c「〜/ bin/addautomaps $ groupentry $ homeentry $ ticket」/ dev/null' – anishsane

+0

@anishsane:你能解釋一下你的答案背後的基本原理嗎? – Inian

+1

我的不好。從'man script':'腳本的內殼總是交互式的'。所以以'-c'傳遞的命令在交互式shell中運行。 – anishsane

回答

0

以相反的順序回答您的問題(或者最嚴重至最不嚴重的問題)。

您的參數(包含空格)沒有被正確傳遞的問題是,當您在本地引用命令字符串時,不是在它們實際由遠程計算機運行時引用它們。

這就是你正在生成一個單一的字符串與擴大的變量,但沒有任何東西告訴遠程系統不要拆分空間上的擴展值。

解決方法是,您需要引用遠程shell命令中的參數以及ssh的整個字符串。

我的回答here可能有助於解釋一些(這是一個類似的問題)。

tput「問題」可能只是一個警告,如果您不關心彩色/程式化/等等,您可能會忽略它。輸出tput可能被用來創建。你也可以嘗試在ssh ... "export TERM=dumb; ..."之類的遠程端強制$TERM的值,或者類似的東西來使其靜音。