DamDamich
@DamDamich
Network Engineer

Python + Paramico + «need assistance»?

Добрый день,

Ребята, в python сильно не умею, поэтому ткните пожалуйста где я не прав.
При выполнении кода, не выполняется тестовая команда ls -la на удаленном сервере или возможно выполняется, но не пишется в лог файл, в свою очередь лог файл создается и на сервер пользователь заходит.
import paramiko
import time
import datetime
import sys
import os

user = 'test'
pas = 'password'
port = 22
host= '172.26.14.84'

remote_conn_pre = paramiko.SSHClient()
remote_conn_pre.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote_conn_pre.connect(hostname=host, username=user, password=pas, port=port, timeout=90)
remote_conn = remote_conn_pre.invoke_shell()
remote_conn.settimeout(20)
remote_conn.send ('\n')
time.sleep(1)
check=remote_conn.recv(2048)
print(check.decode('ascii'))
remote_conn.send ('ls -la' + '\n')
timestr = time.strftime("%d%m%Y")
log_out=open('/home/test/test_'+timestr+'.txt', 'w')
log_out.write(check)
log_out.close()
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
@immaculate
Программист-путешественник
Вы переменной check присваиваете значение до выполнения команды.
Вместо конкатенации строк лучше использовать форматирование: '/home/test/test_{}.txt'.format(timestr). Такой код проще читать и поддерживать.

А здесь: 'ls -la' + '\n' вообще ни то, ни другое не нужно, ничто не мешает сразу написать 'ls -la\n'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы