SSH経由でスクリプトを表示しますか?


8

リモートマシンを使用している友人が私のマシンにSSH接続し、次のPythonスクリプトを実行しました。


一方(1):

.... print "hello world"


(このスクリプトは単に「hello world」を継続的に出力します)。

現在、自分のマシンにログインしています。友達が実行しているスクリプトの出力を確認するにはどうすればよいですか?


それが役立つ場合は、友人が使用しているスクリプトを「見つける」ことができます。

me @ home:〜$ ps aux | grep justprint.py

友達7494 12.8 0.3 7260 3300?Ss 17:24 0:06 python TEST_AREA / justprint.py

友達7640 0.0 0.0 3320800 pts / 3 S + 17:25 0:00 grep --color = auto just


画面に "hello world"メッセージを表示するには、どのような手順を踏む必要がありますか?


回答:


9

通常、他の人のプログラムの出力は表示されません。その列でgrepコマンドがtty pts/3で実行されているところと、友達のが?であるところを見てください。これは、ターミナルから切り離されていることを意味します。

出力がどこに行くのかを確認できますls -l /proc/7494/fd/(ここで7494は友達のプロセスのプロセスIDです)。ただし、rootとして実行していない場合は、セキュリティ上の理由からおそらく確認することもできません。(だから試してくださいsudo ls -l /proc/7494/fd/。)

プログラムの出力先を変更するために実行できる恐ろしい、恐ろしい、不器用なことがあります。しかし、一般的にはできませんし、すべきではありません。

友達があなたと出力を共有したい場合、アプローチはプログラムの出力をファイルにリダイレクトし、そのファイルをあなたが読めるようにすることです:

$ python -u TEST_AREA/justprint.py > /tmp/justprint.out &
$ chmod a+r /tmp/justprint.out

(この場合、「あなたが読める」は「全員が読める」です。もう少し作業を進めると、共有グループを設定して、2人だけが出力を交換できるようになります。)

(そしてpythonはデフォルトで出力をバッファリングすることに注意してください—これをオフにすること-uが目的です。)


4

マシンにrootアクセス権があり、友達がいくつかのコマンドを実行しても構わない場合は、次のことが可能です。

  1. [ルート] screensetuidルートである必要があります:chmod u+s /usr/bin/screen
  2. [友達]が開始しscreen、セッションに名前を付けることができるので、簡単になります: screen -S "shared_session"
  3. [友達]マルチユーザーモードを有効にします: Ctrl-a :multiuser on
  4. [友達]は彼のスクリーンセッションにアクセスできます: Ctrl-a :acladd you
  5. [友達](オプション)アクセスを読み取り専用に制限します: Ctrl-a :aclchg you -w "#"
  6. [あなた]友達の画面に添付: screen -x friend/shared_session

setuidルートはおそらく少し危険です...


それはする必要がありsuidますか?
xenoterracide 2010

:いない場合は、画面がで終了します Must run suid root for multiuser support.
WAG

1
stackoverflowへのこの質問のクロスポストでscreenを使用することも提案されました:stackoverflow.com/questions/4425308/view-script-over-ssh/…screen -tはsetuidルートが設定されていなくても正常に動作することに注意してください。
kasterma 2010

@kasterma:ユーザーAが実際にscreensuid / root権限なしでユーザーBにアタッチできる場合、私は少し懐疑的です、それをさらに説明できますか?
2010

@wagあなたは正しいです。ステップ6以外はすべて機能します。これは、私がテストを行わなかった(ただし、当然必要だった)テストです。(ステップ4でこれについて警告が表示されていれば良かったかもしれません)
kasterma
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.