リモート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と通信していないことを検出した可能性があります。