vm list:
servername1 172.28.0.xx
servername2 172.28.0.xx
servername3 172.28.0.xx
import paramiko #paramiko lib for remote ssh connection
cmd_linefeed = "sudo sh -c 'echo >> /etc/ssh/sshd_config'" #linefeed 文件末尾追加换行
cmd_modify_sshd = "echo 'Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com'|sudo tee -a /etc/ssh/sshd_config"
cmd_restart_sshd = "sudo systemctl restart sshd"
with open('autolist', 'r') as file_to_read: # prodlist is the file name
while True:
line = file_to_read.readline()
if not line:
break
line = line.strip('\n')
print(line)
try:
trans = paramiko.Transport(line, 22) # Try to connect via port 22
except:
print("connection error!") # in case connection failed
continue
else:
try:
trans.connect(username="username", password="passw0rd") # try password "passw0rd"
except:
trans.close()
trans = paramiko.Transport(line, 22)
trans.connect(username="username", password="passw0rd") # try password ""passw0rd""
finally:
ssh = paramiko.SSHClient()
ssh._transport = trans
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # ignore if it's asked to input "yes"
stdin, stdout, stderr = ssh.exec_command(cmd_linefeed, get_pty=True, timeout=20)
print(stdout.read().decode())
print(stderr.read().decode())
stdin, stdout, stderr = ssh.exec_command(cmd_modify_sshd, get_pty=True, timeout=20)
print(stdout.read().decode())
print(stderr.read().decode())
stdin, stdout, stderr = ssh.exec_command(cmd_restart_sshd, get_pty=True, timeout=20)
print(stdout.read().decode())
print(stderr.read().decode())
ssh.close()