0

私はパラミコに小さな問題があります。手動の ssh セッションのように、すべてのコマンドが実行されるわけではないようです。

私の主な関心事はこのコマンドですが、「履歴」シェルコマンドに焦点を当てましょう。

$ python /home/metrosim/src/urbansim/tools/make_indicators.py \
-x /home/metrosim/project_configs/paris_zone_ovh_km130110.xml \
-c /home/metrosim/data/paris_zone/base_year_data_a \
-i trip_generation -y [1999]

どちらも手動の ssh セッションで動作していますが、paramiko では動作していませんが、ls -lA作業のような単純なコマンドです。

これが私のコードです:

stdin, stdout, stderr = ssh_client.exec_command('history')

print 'LINES : '
data = stdout.read().splitlines()
for line in data:
     print line
4

1 に答える 1

0

シェルセッションをエミュレートする場合は、invoke_shell()の代わりにを使用してみてくださいexec_command()

invoke_shellドキュメントから:

このチャネルでインタラクティブシェルセッションをリクエストします。サーバーで許可されている場合、チャネルはシェルのstdin、stdout、およびstderrに直接接続されます。

通常、この前にget_ptyを呼び出します。この場合、シェルはptyを介して動作し、チャネルはptyのstdinおよびstdoutに接続されます。

シェルが終了すると、チャネルは閉じられ、再利用できなくなります。別のシェルを開く場合は、新しいチャネルを開く必要があります。

于 2013-01-18T07:50:54.493 に答える