[英]Python IP output (print) is not working correctly
我是Python新手。 無法使我的第一個腳本正常工作。 我想要的是:
該XLS包含約6k主機。 我對制作多線程有一些想法,但是對此一無所知。 會盡快嘗試。
問題是,我在控制台中無法獲得良好的“打印(主機)”輸出。 腳本運行良好,但是我每次看到的第一個IP都不是正確的IP名稱。
IP清單:
10.1.115.105 10.1.115.108 10.1.115.143等
我在聊天中看到
[root @ localhost python]#python3.3 telnet_bck.py
10.1.115.105
10.1.115.105
10.1.115.105
但是文件保存正確
-rw-r--r-- 1個根root 16536 Apr 8 07:38 10.1.115.105
-rw-r--r-- 1個根root 16536 Apr 8 07:38 10.1.115.108
-rw-r--r-- 1根root 16536 Apr 8 06:53 10.1.115.243
我猜問題出在“主機= ip_addr_list [0]”附近,但是不知道在哪里。 伙計們,請幫忙。 任何幫助將不勝感激。
import xlrd #Excel module
import re #Parser module
import os
import glob
import sys
import telnetlib #telnet module
rb = xlrd.open_workbook('/samba/allaccess/test.xlsx')
sheet = rb.sheet_by_name('IPs')
num_rows = sheet.nrows
num_cols = sheet.ncols
ip_addr_list = [sheet.row_values(rawnum)[0] for rawnum in range(sheet.nrows)]
num_ips = 0
while num_ips < num_rows:
host = ip_addr_list[0]
port = "23"
user = "test"
password = "test"
print(host)
tn = telnetlib.Telnet(host,port)
tn.read_until(b"ser name:")
tn.write(user.encode('ascii')+b"\n")
tn.read_until(b"assword:")
tn.write(password.encode('ascii')+b"\n")
tn.write(b"sh ru"+b"\n")
tn.write(b"exit"+b"\n")
str_all = tn.read_all()
re.sub("^\s+|\n|\r|\s+$", '', str_all.decode())
file = open('{0}'.format(ip_addr_list[num_ips]),"wb")
file.write(str_all)
num_ips += 1
正如您正確假設的那樣,問題出在host = ip_addr_list[0]
。 ip_addr_list
是元素的列表(數組), [0]
是元素在列表中的索引。 因此,無論循環運行多少次, host
始終是ip_addr_list
第一個元素。 另外,還有更多的“ pythonic”方式遍歷列表。 這將是:
for host in ip_addr_list:
port = "23"
user = "test"
password = "test"
print(host)
tn = telnetlib.Telnet(host,port)
tn.read_until(b"ser name:")
tn.write(user.encode('ascii')+b"\n")
tn.read_until(b"assword:")
tn.write(password.encode('ascii')+b"\n")
tn.write(b"sh ru"+b"\n")
tn.write(b"exit"+b"\n")
str_all = tn.read_all()
re.sub("^\s+|\n|\r|\s+$", '', str_all.decode())
file = open('{0}'.format(host),"wb")
file.write(str_all)
num_ips += 1
這樣,在每次循環迭代中, host
將包含ip_addr_list
下一個元素。 您也可以考慮將port, user
和password
定義移出循環。 它們始終是相同的,因此無需每次都珍惜價值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.