请耐心等待,因为我还是编程新手。我正在编写一个Python脚本,它将登录到远程服务器并从文本文件中捕获字符串/文本。我使用pxssh作为我的模块来实现这一点。我尝试运行脚本,它给了我一个错误,提示 faultyhardware = getFaultyHardware() NameError:名称'getFaultyHardware'未定义。我尝试阅读本网站上的其他问题,但似乎一点也听不懂。有人可以指出正确的解决方法吗?感谢所有帮助。
#!/usr/bin/python
import pxssh
import getpass
try:
s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('cat /home/ubuntu/output.txt')
s.prompt()
faultyhardware = getFaultyHardware(s.before)
for faulty in faultyhardware:
print(faulty)
print s.before
s.logout()
def getFaultyHardware(contents):
faulty = []
content_list = contents.split(':')
for x in range(len(content_list))
is_exist = 'Location' in content_list[x]
if is_exist == True:
start = content_list[x+1].find("/")
output = content_list[x+1][start:][:14]
print(output)
faulty.append(output)
return faulty
答案 0 :(得分:2)
您应将getFaultyHardware
的定义放在try
语句之前。 Python是逐行解释的,因此在try
时,getFaultyHardware
尚未定义。
答案 1 :(得分:0)
使用该函数之前,必须先对其进行声明:
#!/usr/bin/python
import pxssh
import getpass
def getFaultyHardware(contents):
faulty = []
content_list = contents.split(':')
for x in range(len(content_list))
is_exist = 'Location' in content_list[x]
if is_exist == True:
start = content_list[x+1].find("/")
output = content_list[x+1][start:][:14]
print(output)
faulty.append(output)
return faulty
try:
s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('cat /home/ubuntu/output.txt')
s.prompt()
faultyhardware = getFaultyHardware(s.before)
for faulty in faultyhardware:
print(faulty)
print s.before
s.logout()