[英]loop in python not working for all line in text file
此代码用于获取mikrotik设备的身份。 运行此代码后。 仅适用于最后一个IP
ip.txt中的行
192.168.3.6 --> NET_6
192.168.3.8 --> NET_8
192.168.3.10 --> NET_10
import os
filename = 'ip.txt'
with open(filename, 'r') as f:
for line in f:
pq = os.popen('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
line = pq.readline()
print(line)
Using username "admin".
Using username "admin".
name: NET_10
问题是line = pq.readline()
,在这里您使用与for相同的变量,应该使用其他名称。
您可以做的测试只是将txt文件的每一行都打印为以下代码:
FILE_NAME = 'ip.txt'
with open(FILE_NAME, 'r') as f:
for line in f:
print(line)
如果代码可以打印出文件,则可以添加逻辑。
现在,您仅读取文件就进行了测试,让我们使用os.popen()
,但是请注意,由于您使用了与for相同的变量名,因此我确实更改了代码并更改了变量名。 尝试下面的代码,这应该可以正常工作
import os
FILE_NAME = 'ip.txt'
with open(FILE_NAME, 'r') as f:
for line in f:
pq = os.popen('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
response = pq.readline()
print('Current line: {}'.format(line))
print('Response from popen: {}'.format(response))
您的代码输出:
Using username "admin".
Current line: 192.168.3.6
Response from popen:
Using username "admin".
Current line: 192.168.3.8
Response from popen:
Current line: 192.168.3.10
Response from popen: name: NET_10
为了测试运行此代码:
import os
FILE_NAME = 'ip.txt'
with open(FILE_NAME, 'r') as f:
for line in f:
pq = os.popen('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
print('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
response = pq.readline()
plink -batch admin@192.168.3.6
-pw 123456@ "/system identity print"
Using username "admin".
plink -batch admin@192.168.3.8
-pw 123456@ "/system identity print"
Using username "admin".
plink -batch admin@192.168.3.10 -pw 123456@ "/system identity print"
如何将字符串合并成一行?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.