2012-03-22 31 views
6

私はすでに公開鍵をリモートホストに置いています。したがって、パスワード入力の問題はありません。リモートホストにsshしてすぐにコマンドを実行する方法

リモートマシンにログインしてすぐにscreen -rを実行します。これを達成する方法はありますか?例えば

ssh example.com ; screen -r 

しかしscreen -rがリモートホストに送信しませんので、これは間違っています。

+0

'screen'コマンドにはTTLが必要な場合があります。他のコマンドは正常に動作しますが、答えに指摘されているように、 'ssh hostコマンド' ' – gahooa

答えて

6

あなたの例からセミコロンを削除します。

ssh example.com "screen -r" 

はあなたはそれが正常に実行するために接続された端末を必要とするように、しかしその特定のコマンドのために多くの帯域幅を取得するつもりはありません。


* EDIT 1 *

、単なる文字列を複数のコマンドを実行するには、それらが一緒にセミコロンで区切ら:

ssh example.com "screen -r; ls -al; ps -elfc" 

* EDIT 2 *

まだ完全にはありませんあなたが達成しようとしていることを確かめてください。(例はscreen -rでしたか、本当に一緒にたくさんのコマンドを連鎖しようとしていますか?)具体的に実行するには

ssh -t example.com "screen -r; ls" 

:画面を実行した後、いくつかのランダムなコマンドを実行するには

ssh example.com "ps -elfc; ls" 

:一緒に連鎖ランダムコマンドに

:いずれの場合では、私はより多くの可能性をカバーするために私の答えを修正していますそれにコマンドを送信してください:

ssh -t example.com "screen -r -X ls" 
+0

が必要です:'端末に接続しなければなりません.'これは私の望みではありません。 'screen -r'の後でこのホストを使い続けたいと思います。 –

+0

「このホストを使用し続ける」とは、一連のコマンドを発行することを意味すると見なします。そのための私の答えに編集を参照してください。前にも述べたように、 'screen -r'は接続された端末なしでは動作しません。また、ssh経由でリモートコマンドを実行している場合は、端末はありません。 – Perception

+0

@perception、 "ssh経由でリモートコマンドを実行している場合は、ターミナルを持っていません"というのは真実ではありません。 – amcnabb

1

http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1

SSH [-1246AaCfgkMNnqsTtVvXxY] [-b bindするアドレス] [-c cipher_spec] [-D [bindするアドレス:]ポート] [-e escape_char] [-Fたconfigfile] [-i identity_file] [-L [bind_address:] port:host:hostport] [-l mac_spec] [-O ctl_cmd] [-oオプション] [-pポート] [-R [bind_address:]ポート:ホスト:ホストポート] [-S ctl_path] [-wトンネル:トンネル] [ユーザー@]ホスト名は[コマンド]

コマンドは、最後のパラメータです。 ; sshとscreenが2つの異なるコマンドであることをローカルシェルに伝えます。コマンドとは別のものが引数です。

それが画面以来、仕事をしたりしませんかどうかわからないがでそれを行うには奇妙なプログラムですが、SSH blah.com「画面-r」は正しい構文です。

1

これは動作します

ssh [email protected] 'ls -l' 
+0

それは間違っています。 backticksは* ls -l *コマンドを実行し、その出力を取り出して、* ssh root @ something *への引数として入れます。 – Corbin

+0

おっと!打ち間違え!私は 'と'を意味しませんでした。修正済み –

+0

これは私の欲しいものではありません。 'screen -r'の後でこのホストを使い続けたいと思います。 –

1

単一引用符使用してみてください:ちょうどあなたがホスト名の後に実行するコマンドを入れ

ssh example.com 'screen -r' 
+0

引用符は不要です – salva

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 –

+0

@SamKuhmonen who /あなたは何をアドレッシングしていますか? –

1

を:

ssh example.com screen -r 
8

あなたが実行コマンドを使用すると、デフォルトでsshは擬似端末を割り当てません。リモートホストで画面のような対話型プログラムを実行する場合は、擬似端末が必要です。 -tオプションでこれが行われます。試してみてください:

ssh -t example.com "screen -r" 
2

ます。また、リモートホストへのあなたのコマンドをエコーすることができます

echo "command" | ssh [email protected] 
0

はこれを試してみてください...

ssh -XY -t [email protected]_IP 'ssh -XY -t [email protected]_IP' 

あなたがでコマンドscreen -rまたはその他を続行することができますremoteToRemote_IPマシン。

関連する問題