2

私はsshを扱っており、私のタスクは非対話型(?)モードで別のコンソールに複数回ログインすることなので、ログアウトするにはCTRL-Dを入力する必要があるようなモードでマシンに具体的にログオンし、この操作繰り返します。

 #!/bin/bash  
for i in `seq 100`  
do  
ssh test@macintel  
sleep 1  
done  

CTRL-D を手動で入力してログアウトする必要がないようにする方法はありますか?

のようなコマンドを実行してもssh test@macintel './command.sh'うまくいきません。

PIDで強制終了するか、ファイル記述子で呼び出すことを考えていましたが、呼び出されたssh接続によってローカルセッションがブロックされています。

4

4 に答える 4

1

テストされていませんが、ログインするとすぐにログアウトされるように、デフォルトのシェルmacintelをログアウトに変更します。

sudo chmod -s logout test

macintelログアウトは標準シェルではないため、コマンドは root として実行する必要があります。

于 2012-07-10T14:27:41.460 に答える
0

ssh -vv logによると、ssh ssh -vv root@host "command;exit"の出力が次のように表示された場合に呼び出される内容は次のとおりです。

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

出力を呼び出すのに対しssh -v root@host

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ロギング中に呼び出される「シェル」が必要なようです。

@chepner:あなたの解決策は大丈夫のようですが、そのような方法でアカウント設定を変更することはできません。とにかくアイデアをありがとう。

于 2012-07-11T07:39:25.577 に答える
0

これは redhat ボックスで動作します:

#!/bin/bash
for i in seq 100
do
ssh user@server "/path/command.sh;exit"
done
于 2012-07-10T18:31:08.457 に答える