没有名为PXSSH的模块

时间:2017-07-16 14:28:09

标签: python-2.7

我只是一个使用python 2.7的初学者。请原谅我的天真

我的以下代码无效

import sys
import os
import time
import re
import pxssh

a = ['192.168.50.11', '192.168.50.12']

for i in a:
    Host  = i
    print Host
    User = "xyz"
    Password = "abc"
    tn = pxssh.pxssh(Host)
    tn.read_until("login as: ")
    tn.write(User + "\n")
    tn.read_until("Password: ")
    tn.write(Password + "\n")
    tn.read_until("#")
    tn.write("show run\n")
    time.sleep(3)
    output = tn.read_all()
    time.sleep(3)
    f = open("C:/Python27/file/"+ Host + ".txt", "w+")
    f.write(output)
    f.close()
    tn.close()

它给了我以下错误:

Traceback (most recent call last):
  File "C:/Python27/backup_config_files", line 5, in <module>
    import pxssh
ImportError: No module named pxssh

请告诉我如何使用Windows中的python 2.7解决此pxssh模块问题

2 个答案:

答案 0 :(得分:0)

使用

安装pexpect
;Constants
AscUpi              equ     "I"
AscLowi             equ     "i"
AscUpn              equ     "N"
AscLown             equ     "n"
AscUpo              equ     "O"
AscLowo             equ     "o"
AscUpu              equ     "U"
AscLowu             equ     "u"
AscUpt              equ     "T"
AscLowt             equ     "t"
AscDot              equ     "."

call    GetFileName
call    GetFileNameLength
call    VerifyFileName
call    GenFileNameOut

VerifyFileName proc near
    mov     dx, FileNameLength
    mov     FileNameLengthAux, dx ; SI considera FileName[0] como sendo a 1a posição, como vetores em C
    sub     FileNameLengthAux, 3 ;FileNameLength - 3 -> posição do . em ".IN"
    mov     si, FileNameLengthAux ;"."
    ;mov    dx, "."
    cmp     FileNameIn[si], AscDot
    je      testa_i
    jmp     no_extension
testa_i:
    inc     si  ;FileNameLength - 2 -> posição do I em ".IN" ;"i" ou "I"
    ;mov    dx, "I"
    cmp     FileNameIn[si], AscUpi
    je      testa_n
    ;mov    dx, "i"
    cmp     FileNameIn[si], AscLowi
    je      testa_n
    jmp     no_extension
testa_n:
    inc     si ;FileNameLength - 1 -> posição do N em ".IN" ;"n" ou "N"
    ;mov    dx, "N"
    cmp     FileNameIn[si], AscUpn
    je      right_extension
    ;mov    dx, "n"
    cmp     FileNameIn[si], AscLown
    je      right_extension
    jmp     no_extension
no_extension: ;Inclui extensao errada, caso seja entrado 123.abc, será transformado em 123.abc.in (.in são os últimos 3 caracteres)
    mov     dx, FileNameLength
    mov     FileNameLengthAux, dx
    sub     FileNameLengthAux, 1
    mov     si, FileNameLengthAux
    inc     si
    ;mov    dx, "."
    mov     byte ptr FileNameIn[si], AscDot
    inc     FileNameLength ; Ajusta o FileNameLength somando os 3 caracteres que acabaram de ser adicionados
    inc     si
    ;mov    dx, "I"
    mov     byte ptr FileNameIn[si], AscUpi ; No PDF está especificado '.IN'
    inc     FileNameLength ; Ajusta o FileNameLength somando os 3 caracteres que acabaram de ser adicionados
    inc     si
    ;mov    dx, "N"
    mov     byte ptr FileNameIn[si], AscUpn
    inc     FileNameLength ; Ajusta o FileNameLength somando os 3 caracteres que acabaram de ser adicionados
    inc     si
    mov     FileNameIn[si], 0 ; Fecha a String do nome de arquivo
    ;jmp    right_extension
right_extension:
    ;FILENAMEIN ESTA CORRETO
    ret
VerifyFileName endp
GenFileNameOut proc near
    ;O nome do arquivo de entrada está correto agora, e o tamanho foi atualizado caso tenha sido necessário
    ;Copiar o FileNameIn para FileNameOut e fazer os ajustes (.IN -> .OUT)

    mov     cx, FileNameLength
    lea     si, FileNameIn
    lea     di, FileNameOut
    rep     movsb ; Cópia de strings

    ;agora FileNameOut = FileNameIn

    mov     ax, FileNameLength
    mov     FileNameLengthAux, ax
    sub     FileNameLengthAux, 2 ; Vai para a posição do "I" em ".IN"
    mov     si, FileNameLengthAux
    mov     byte ptr FileNameOut[si], "O" ; Subtitui o 'I' por 'O'
    inc     si
    mov     byte ptr FileNameOut[si], "U" ; Subtitui o 'N' por 'U'
    inc     si
    mov     byte ptr FileNameOut[si], "T" ; Subtitui o 0 por 'T'
    inc     si
    mov     byte ptr FileNameOut[si], 0   ; Subtitui o 0 por 0

    ;FILENAMEOUT ESTA CORRETO
    ;call   NewLine
    ;lea    bx, FileNameOut
    ;call   printf_s

    ;FileNameOut está pronto
    ;jmp    return_filename_out
return_filename_out:
    ret
GenFileNameOut endp
GetFileNameLength proc near
    mov     si, 0 ;primeira posicao da string
inicio_filename_length: 
    mov     al, FileNameIn[si]
    cmp     al, 0
    je      fim_filename_length
    inc     FileNameLength      
    inc     FileNameLengthAux   ;Cópia de FileNameLength
    inc     si
    ;add    si, 1
    jmp     inicio_filename_length
fim_filename_length:
    ret
GetFileNameLength endp

然后使用

导入
pip install pexpect

参考:docs

答案 1 :(得分:0)

此问题与this one类似。

pxssh是一个类,您必须从模块pexpect导入

您的导入如下:

from some.location.pexpect import pxssh

如果您的工作环境中没有bash中的pexpect模块,pip install pexpect