В настоящее время я использую модуль paramiko для S SH в списке IP-адресов, предоставляемых в виде файла .csv, а затем команды pu sh для этих IP-адресов. Для этого sh я использую csv.reader (), чтобы открыть и прочитать 100 строк файла в следующем формате.
Серийный номер, IP-адрес, MS, RM (MS & RM - это информация, связанная с IP-адресом)
Контекст
Здесь я использую csv.reader (), чтобы открыть и прочитать файл, чтобы затем разместить информацию в качестве словаря keys
.
Затем я go вкладываю другой словарь в keys
как keys[row[0]]
, чтобы индексировать IP-адрес и другую информацию как ep_ip
, ms_key
и rm_key
.
option_dict = open('OptionKeyDict.csv','r')
reader= csv.reader(option_dict)
keys= {}
for row in reader:
keys[row[0]]= {'IP':row[1],'MS': row[2],'RM': row[3]}
ep_ip = keys[row[0]]['IP']
ms_key= keys[row[0]]['MS']
rm_key= keys[row[0]]['RM']
command= 'xCommand SystemUnit OptionKey Add Key: '
multi_site= command + ms_key
remote_monitor= command + rm_key
Затем я go ввожу логин Paramiko c скрипта для принятия приведенных выше инструкций и S SH в IP-адрес, затем выполняю multi-site
& remote-monitor
команды.
for host in keys:
host= ep_ip
i = 1
while True:
print ("\nTrying to connect to %s (%i/2)" % (host, i))
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, password=password, look_for_keys=False, timeout= 5)
print ("\nConnected to %s" % host )
connection_state = 1
break
if connection_state == 1:
client_shell = ssh.invoke_shell()
time.sleep(.4)
client_shell.send(multi_site + "\n")
time.sleep(.4)
client_shell.send(remote_monitor + "\n")
Итак, запуск этого работает частично. Сценарий успешно S SH затем отправляет команды, но использует только фрагменты информации из последней строки (IP-адрес, MS и RM) и выполняется 100 раз, поскольку в .csv есть 100 строк.
Кажется, у меня не получается запустить скрипт в первом ряду, а затем пройти по каждой строке до 100-го ряда.
Теперь, когда я получил контекст с пути ... (Извините, новичок в StackOverflow)
Вопрос
Что мне здесь не хватает, что позволит это случиться? Я чувствую простую настройку, которую я не вижу.
Любая обратная связь будет принята с благодарностью. Спасибо!