1
echo Something=Something > file

paramikoのexec_commandを使用して、、catおよびgrepを実行できlsますが、ファイルを変更しようとすると何も実行されません。私はすでにsuこの前に走りました。ファイルは、コマンドを実行する前とまったく同じままです。

4

1 に答える 1

2

これは、exec_command呼び出しごとに新しいチャネルを開く必要があるためです。これは、特定のチャネルに関連付けられているため、suコマンドの認証を失います。

いくつかのオプションがあります。

  1. sudoを使用してコマンドを実行します。これは、paramikoでは実行できない場合があります。
  2. ルートとしてログインしますが、これは必ずしも良い考えではありません
  3. チャネルでinvoke_shell()を使用してから、stdを介してシェルにコマンドを送信します

オプション3では、状態情報をそのまま維持しながら、paramikoでsshをインタラクティブに使用できます。それがsuコマンドに必要なものです。また、シェル接続の周りにpexpectタイプのラッパーを作成し、stdoutパイプを監視して処理が完了したことを確認し、stdinを介して追加のコマンドを送信することもできます。データを読み取るまで、パイプがいっぱいになってブロックされていることに注意してください。

于 2011-06-07T17:56:47.570 に答える