2012-07-10 202 views
2

我正在處理ssh,我的任務是在非交互式(?)模式下多次登錄到另一個控制檯,所以我特別以這種模式登錄計算機,我必須鍵入CTRL- D註銷,並重復此操作。多個ssh登錄/註銷

#!/bin/bash 
for i in `seq 100` 
do 
ssh [email protected] 
sleep 1 
done 

有什麼辦法讓我不必手動輸入CTRL-D來註銷嗎?

運行像ssh [email protected] './command.sh'這樣的任何命令都不適用於我。

我想通過它的PID殺死它,或者用一些文件描述符調用它,但我仍然通過調用的ssh連接阻止了本地會話。

+0

請澄清「運行任何命令,如ssh test @ macintel'./command.sh'不適用於我」 - 出了什麼問題?你嘗試過哪些命令? – 2012-07-10 15:41:23

+0

我的意思是用法運行非登錄shell,而我需要它作爲登錄shell。這是因爲我們有軟件可以查出它並且整個案例都是關於登錄loggins的。但是當我運行ssh test @ macintel時,由於連接到另一個客戶端,我的當前widnow/session被「阻塞」,我不知道如何自動斷開這個for循環中的連接。 – modzello86 2012-07-13 08:01:24

回答

1
ssh -l root 192.168.22.250 -C "./command.sh" 

使用-C選項穿過你想在遠程機器上執行命令,

+0

這與通過簡單的ssh root @ machine登錄有點不同。正如我前面提到的那樣,我們使用一些軟件來關閉物理登錄或登錄。所以任務是登錄然後以某種方式中斷連接(或退出0)。按照您的建議運行某些命令對我無效。 – modzello86 2012-07-10 14:11:08

1

未經檢驗的,但改變macintel默認的shell註銷,讓你儘快註銷您登錄:

sudo chmod -s logout test 

該命令必須在macintel因爲註銷是不是一個標準的shell以root身份運行。

0

這適用於紅帽框:

#!/bin/bash 
for i in seq 100 
do 
ssh [email protected] "/path/command.sh;exit" 
done 
+0

同樣的事情..請求「exec」而不是「shell」 – modzello86 2012-07-11 09:44:35

0

Accorrding到ssh -vv這裏記錄的內容被調用 如果ssh -vv [email protected] "command;exit"輸出SSH的說明:

debug1: Sending command: command;exit
debug2: channel 0: request exec confirm 1
...
debug2: exec request accepted on channel 0

而調用ssh -v [email protected]輸出:

debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
...
debug2: shell request accepted on channel 0
Last login: Wed Jul 11 09:11:22 2012 from 192.168.11.2

所以它看起來像我需要ssh日誌時調用「shell」。

@chepner:您的解決方案似乎沒問題,但我不能以這種方式更改帳戶設置。無論如何感謝您的想法。