Я все еще изучаю python, и я написал скрипт, который регистрирует на устройствах cisco и запускает команду, пишет в файл csv и отправляет как вложение электронной почты, но при открытии файла на моем компьютере с Windows он имеет нечитаемые символы:
Если маршрутизатор недоступен, просто записывает файл с сообщением устройства и показывает 0 как пустой файл в Unix, но в Windows я вижу это:
Ниже приведен скрипт:
> def ssh_conn():
> user = 'xxxxxxx'
> passwd = 'xxxxxx'
> file2 = ("hostfile")
> hosts = open(file2,'r')
> for host in hosts:
> try:
> hostIp = host.split(',')[1]
> device = host.split(',')[0]
> session = paramiko.SSHClient()
> session.set_missing_host_key_policy(paramiko.AutoAddPolicy())
> session.connect(hostIp.strip(), username = user, password = passwd)
> connection = session.invoke_shell()
> connection.send("terminal width 0\n")
> connection.send("sh archive config differences nvram:startup-config system:running-config | exc !|Diff\n")
> time.sleep(1)
> output = connection.recv(5000)
> f = open(device +".csv", "w")
> f.write(output+'\n')
> f.close()
> except:
> #f1 =codecs.open(device +"-DOWN.csv", "w", encoding="utf_16")
> f1 = open(device +"-DOWN.csv", "w")
> f1.close()
> pass
> files = glob.glob('*.csv')
> for file in files:
> if os.stat(file).st_size > 0:
> try:
> df=pd.read_csv(file,skiprows = 1).dropna()
> if len(df) <=2:
> os.remove(file)
> elif len(df) > 2:
> df=pd.read_csv(file, skiprows = 1, header=True).dropna()
> df.to_csv(file, index=False)
> else:
> print 'Empty File..passing'
> pass
> except ValueError:
> print 'Modified file'
> pass ssh_conn() print "Completed!"
Я пробовал использовать некоторые кодировщики, но те же.Также пытался записать в текстовый файл то же самое.Надеюсь, что вы можете дать подсказку.