我对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
答案 0 :(得分:0)
如果您想模拟shell会话,请尝试使用invoke_shell()
而不是exec_command()
。
来自invoke_shell
文档:
请求交互式shell会话 在这个频道上。如果服务器允许,则通道将是 直接连接到shell的stdin,stdout和stderr。
通常你会在此之前调用get_pty,在这种情况下是shell 将通过pty运行,并且通道将连接到 stdin和stty的std。
当shell退出时,通道将关闭,无法重复使用。 如果您想打开另一个shell,则必须打开一个新频道。