Я написал код для ssh на сервере и выполнил команду, теперь мне нужно передать IP-адреса из файла в ssh и выполнить те же команды.
Я использовал paramiko в качестве ssh-клиента, в client.connect я давал имя хоста статически, я хотел бы выбрать один IP-адрес за раз из текстового файла и выполнить ту же программу.
import paramiko
import logging
import sys
logging.basicConfig(level=logging.INFO)
def EsxCli():
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy) client.connect(hostname='192.168.110.41',port='22',username='root',password='VMware1!',look_for_keys=False)
stdin,stdout,stderr = client.exec_command('/etc/init.d/vShield-Stateful-Firewall status')
output_read = stdout.read()
if 'vShield-Stateful-Firewall is running' in str(output_read):
logging.info('\nService is already running!')
sys.exit(1)
elif 'vShield-Stateful-Firewall is not running' in str(output_read):
logging.info('\nService is down, STARTING IT NOW')
stdin, stdout, stderr = client.exec_command('/etc/init.d/vShield-Stateful-Firewall start')
service_status = stdout.read()
logging.info(str(service_status))
else:
logging.exception('SSH Timed OUT')
sys.exit(1)
EsxCli()
Один и тот же код должен быть выполнен для нескольких имен хостов.
скажем, с 192.168.110.41 по 192.168.110.200