Paramiko尝试Vy的非标准命令时“无效命令”

2024-04-20 12:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚尝试使用paramikoforsshing将Python/Django应用程序与Vyatta服务器连接起来。不幸的是,当我试图运行show interfaces时,它抛出“无效命令”。但是,如果尝试从该服务器手动SSH,它可以正常工作。我也尝试了'/vbash -c "show interfaces"'-同样的结果。在

ssh = paramiko.SSHClient()
ssh.connect('10.0.0.1','vyatta','vyatta')
stdin, stdout, stderr = ssh.exec_command('show interfaces')
# or stdin, stdout, stderr = ssh.exec_command('vbash -c "show interfaces"')
print '-'.join(stdout)
print '-'.join(stderr)

Tags: django服务器showstderrstdinstdoutinterfacesssh
2条回答

Vyatta命令由vbash中的模板完成。为了使模板正常工作,需要设置许多环境变量。您必须使用sources.profilerc的远程环境,或者有一个未记录的脚本vyatta cfg命令包装器来设置提交更改所需的更复杂的状态。在

如前所述,您可以使用vyatta cfg cmd wrapper并设置任何配置节点:

<import stuff>

command = """
    /opt/vyatta/sbin/vyatta-cfg-cmd-wrapper begin
    /opt/vyatta/sbin/vyatta-cfg-cmd-wrapper set system host-name newhostname
    /opt/vyatta/sbin/vyatta-cfg-cmd-wrapper commit
    /opt/vyatta/sbin/vyatta-cfg-cmd-wrapper save
    """

sshobj = paramiko.SSHClient()
sshobj.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshobj.connect(IP,username=login,password=sshpass)
stdin,stdout,stderr=sshobj.exec_command(command)
print ''.join(stdout)
sshobj.close()

结果如下:

^{pr2}$

相关问题 更多 >