我只是一个使用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模块问题
答案 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
。