2013-04-07 3 views
2

Я только что пытался подключить свое приложение Python/Django к серверу Vyatta с помощью Paramiko для SSHing. К сожалению, когда я пытаюсь запустить show interfaces, он выдает команду «Invalid command». Однако, если вы пытаетесь SSH вручную с этого сервера, он отлично работает. Я тоже попробовал '/vbash -c "show interfaces"' - тот же результат.Paramiko «Invalid command» при попытке выполнить нестандартную команду для Vyatta

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) 

ответ

0

Команды Vyatta выполняются с помощью шаблонов в vbash. Существует множество переменных окружения, которые необходимо настроить для того, чтобы шаблоны работали. Вы должны либо использовать удаленный envrionment, что источники .profilerc, либо есть недокументированный скрипт vyatta-cfg-command wrapper для установки более сложного состояния, необходимого для фиксации изменений.

+0

Спасибо за ответ. Я попробовал «vbash -c -i» показать интерфейсы », и это, похоже, работает, хотя оно выдает некоторые строки в stderr, а также правильный результат в stdout. К счастью, мне не нужно ничего настраивать, поэтому я надеюсь, что этого будет достаточно. – alekwisnia

2

Как уже упоминалось ранее, вы можете использовать Vyatta-CFG-CMD-обертку и установить любой узел конфигурации:

<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() 

И в reult следующим образом:

[email protected]$ python vyatta.py 

Saving configuration to '/config/config.boot'... 
+0

Спасибо. Это здорово! –

Смежные вопросы