2

我刚刚尝试使用 Paramiko 进行 SSH 连接我的 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)
4

3 回答 3

2

如前所述,您可以使用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()

结果如下:

user@hostname$ python vyatta.py

Saving configuration to '/config/config.boot'...
于 2014-10-09T08:31:38.270 回答
0

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

于 2013-04-08T22:53:36.573 回答
0

就我而言,我使用以下命令解决了这个问题:

vbash -c -i "restart vpn"
于 2021-09-30T07:25:34.807 回答