python列表统计及删除(python利用paramiko模块批量统计服务器的分组信息)
python列表统计及删除(python利用paramiko模块批量统计服务器的分组信息)
需求如下:本人管理的大批量服务器,分给不同的用户使用,也就是说用户登陆上会有限制。这个限制是写在/etc/ssh/sshd_config里的AllowGroups里面的。如下图所示,而transport2这个组下面就有几百个用户了。这样只有transport2组的人才能登陆相关的服务器。有这个关键字,这样查看哪些服务器属于哪个组使用,就方便多了。
def ssh_file_fix():
with open('server.txt' 'r' encoding='utf-8') as rfile:
servers = rfile.readlines() # 按行读取
commframework = []
for item in servers: # 遍历列表,
#commframework=[]
d = dict(eval(item)) # 列表中的第一个元素,编写成字典
d.update(username="xxx" password="xxx" port='22') # 第一个元素更新
value_list = []
value_list.append(d['id'])
value_list.append(d['username'])
value_list.append(d['password'])
value_list.append(d['port'])
# hostinfo = "'" value_list[0] "' '" value_list[1] "' '" value_list[2] "' '" value_list[3] "'"
hostinfo = value_list[0] ' ' value_list[1] ' ' value_list[2] ' ' value_list[3]
hostinfo = hostinfo.strip()
hostip username password port = hostinfo.split(' ')
print(hostip)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostip port=port username=username password=password)
stdin stdout stderr = ssh.exec_command('sudo /usr/bin/grep AllowGroups /etc/ssh/sshd_config')
str_out = stdout.read().decode()
a=str_out[26:].strip('\n')
print (a)
if a == 'a':
result = "this is a-team,the group id is 1"
print(result)
commframework.append(hostip)
print(commframework)
elif a == 'b':
result = "this is b-team,the group id is 2"
print(result)
其中的一个输出如下图: