2013-02-23 2 views
0

Я запускаю freeSSHd на win XP в качестве SSH-сервера, и он возвращает CMD-оболочку для аутентифицированных пользователей, и я хочу получить результат отправки команды ipconfig автоматически при запуске python, я получил соединение, но у меня есть проблема с чтением результата для каждого поля и помещением его в отдельную переменную, результат для моего кода - «4» вместо «10»> первая цифра в IP-адресе, Не знаю, откуда взялось число 4. Есть идеи?Чтение 'ipconfig' с Python-Pexpect

Выход Win XP IpConfig

C: \ Documents и Settings \ Hussam \ Desktop> IPCONFIG

Windows IP Configuration 


Ethernet adapter Local Area Connection: 

     Connection-specific DNS Suffix . : 
     IP Address. . . . . . . . . . . . : 10.0.2.10 
     Subnet Mask . . . . . . . . . . . : 255.255.255.0 
     Default Gateway . . . . . . . . . : 10.0.2.15 

C:\Documents and Settings\hussam\Desktop> 

Мой код

import pexpect 
import re 

def sendcommand(conn,command): 
    conn.sendline(command) 
    conn.expect('\d') 
    print conn.after 

def c(ip,username,password): 
    global conn 
    ft = 'ssh '+username+'@'+ip 
    print 'we are trying to connect to ' + ft 
    new = 'Are you sure you want to continue connecting' 
    conn = pexpect.spawn(ft) 
    result = conn.expect([ pexpect.TIMEOUT , new ,'[P|p]assword:' ]) 
    if result == 0: 
     print 'connection error' 
     return 
    if result == 1: 
     conn.sendline('yes') 
     result = conn.expect([ pexpect.TIMEOUT , '[P|p]assword:']) 
    if result == 0: 
     print 'connection error' 
     return 
    conn.sendline(password) 
    conn.expect('>') 
    sendcommand(conn,command) 



def main(): 
    global command 
    username = 'hkhrais' 
    ip = '10.0.2.10' 
    password = 'hkhrais' 
    command = ' ipconfig' 
    c(ip,username,password) 


main() 
+0

Ar e вы пытаетесь разобрать вывод ipconfig? Где ваш код? – ATOzTOA

+0

Да, например, я хочу поместить результат IP-адреса в переменную x и маску подсети в y и т. Д., Остальная часть кода работает нормально и она предназначена для инициирования соединения SSH – Hussam

+0

Где код, который вы используете для проанализировать данные? – ATOzTOA

ответ

0

Это способ проще использовать WMI:

import wmi 

def return_ip_addresses(user,passwd,machine): 

    i = wmi.WMI(machine, user=user, password=passwd) 

    addresses = [] 

    for interface in i.Win32_NetworkAdapterConfiguration(IPEnabled=1): 
     for ip_address in interface.IPAddress: 
     addresses.append(ip_address) 

    return addresses 

if __name__ == '__main__':  
    print return_ip_addresses('user','secret','10.1.1.1') 
+0

Спасибо за ваш ответ, но мне нужно знать, что случилось с моим скриптом. – Hussam

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