{
"172.123.4.6":{"user":"abc"},
"172.123.5.6":{"user":"abc"},
"172.123.1.6":{"user":"abc"},
}
from invoke import Responder
from fabric import Connection
import json
# load hosts
hosts=json.load(open("nodeinfo.json",'r'), encoding='utf-8')
for key,node in hosts.items():
ip = key.strip()
user =
host ="{0}@{1}".format(node['user'],key) #host forma: user@host:port
c = Connection(host,connect_kwargs={'password':'userPassword'})
# auto fill password
sudopass = Responder(
pattern=r'Password:',
response='replace with your password\n',
)
# enable
result=c.run('su -l root -s /bin/sh -c \'sed -i "s/PermitRootLogin no/PermitRootLogin yes/g" /etc/ssh/sshd_config | service ssh restart \'',pty=True, hide='stderr', watchers=[sudopass])
# disable
# result=c.run('su -l root -s /bin/sh -c \'sed -i "s/PermitRootLogin yes/PermitRootLogin no/g" /etc/ssh/sshd_config | service ssh restart \'',pty=True, hide='stderr', watchers=[sudopass])
print(host, result.ok)