リモートサーバーからの出力リダイレクト

リモートサーバーからの出力リダイレクト

リモートUbuntuサーバーのcentosローカルコンピュータで次のコマンドを実行しようとしています。しかし、それは起こりませんでした。

ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh >> output-1"

上記のコマンドの実行中にこのエラーが発生します。

Connection to 192.11.13.2 closed.

スクリプトはリモートシステムにあり、出力をローカルシステムにリダイレクトしようとしています。

実行するとパスワードを要求し、出力データが表示されます。

ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'"

ただし、リダイレクトとして実行すると、>>パスワードを要求せずに接続が閉じられたと表示されます。

トラブルシューティング

ここでいくつかのトラブルシューティングを行っており、リダイレクトしようとしていますが、>>変更すると>ファイルが作成されているというメッセージが表示されますoutput-1

これはファイルの出力です。

cat output-1
Password:



su: Authentication failure

答え1

これConnection to 10.11.143.72 closed. 場合によってはこれは、コマンドの実行が成功したが、ファイルがローカルではremote-hostなくローカルで作成されたことを示します。

結果をlocalhostに書き込むには、コマンドの外部にリダイレクトされた出力を配置します。

ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh" >> output-1

または、次の構文でコマンドを使用することをお勧めします(コマンドを一般化しました)。

ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'" >> inlocal.log

答え2

編集された質問には現在、二重引用符の内側にリダイレクトが含まれており、機能している場合は間違ったサーバーにファイルを生成します。

ただし、スクリプトファイルのSUIDビット設定を確認することをお勧めします。 Ubuntuターゲットに設定する権限があると仮定すると、実際にはrootとしてログインせずにrootとして実行されます。

現在、解決策が少なくとも出力ファイルに「パスワード入力:」を入力しない理由を完全に理解していません。 ssh経由でコミュニケーションをとり、別のボックスに接続することができれば印象的ですが、ライブttyと通信していないことを検出した可能性があります。

関連情報