命令在SSH上工作但不与Paramiko一起工作

时间:2013-01-18 07:44:52

标签: python ssh paramiko

我对paramiko有一个小问题。似乎所有命令都不像手动ssh会话那样执行。

让我们关注“历史”shell命令,即使我主要关心的是这个命令:

$ 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

1 个答案:

答案 0 :(得分:0)

如果您想模拟shell会话,请尝试使用invoke_shell()而不是exec_command()

来自invoke_shell文档:

  

请求交互式shell会话   在这个频道上。如果服务器允许,则通道将是   直接连接到shell的stdin,stdout和stderr。

     

通常你会在此之前调用get_pty,在这种情况下是shell   将通过pty运行,并且通道将连接到   stdin和stty的std。

     

当shell退出时,通道将关闭,无法重复使用。   如果您想打开另一个shell,则必须打开一个新频道。