博主堕落了很久了!前几天发现开发的同事在我们生产服务器上乱整,产生了很严重的后果,
真的好严重,真的好严重,都发现二次了!这得把权限收回来,他娘的100来台服务器首先得把口令全改回来,前不久看了一下python,试一下弄一个批量修改口令的工具,反正这个风险又不大当测试一下哇。
环境:系统 centos 5.2 +python2.6 +paramiko模块 测试成功!
下载:要问我从那里下载的。我还真记不得了!如果需要那各位可以找谷哥和度娘,天涯只有问房事,这个是找不到的。嘿嘿,也可以发邮件给我!嘿嘿
安装:
paramiko模块需要依赖 pycrypto
安装Python
tar -zxvf Python-2.6.tgz
cd Python-2.6
./configure
make
make install
cd ..
安装
pycrypto
tar -zxvf pycrypto-2.6.tar.gz
cd pycrypto-2.6
python2.6 setup.py install
cd ..
安装
paramiko
tar -zxvf paramiko-1.7.4.tar.gz
cd paramiko-1.7.4
python2.6 setup.py install
cd ..
修改默认python为2.6 当然你也可以不改哈。只是麻烦一点
mv /usr/local/bin/python /usr/local/bin/python2.4
mv /usr/local/bin/python2.6 /usr/local/bin/python
开始程序:嘿嘿
-
#!/usr/local/bin/python
-
-
-
import string
-
import os
-
import paramiko
-
-
-
#设置需要修改的密码和用户名
-
setpasswd="222222"
-
setuser="root"
-
#读配置文件(IP,端口,用户名,密码),以逗号分割的字符串,LINUX格式的回车
-
#192.168.1.118,6868,root,111111
-
filepwd="./user.txt"
-
-
#读配置文件,返回IP,端口,用户名,密码
-
def get_config_file(lines):
-
ip="192.168.1.100"
-
port=6000
-
user="root"
-
password="111111"
-
temp_str=string.split(lines,',') #逗号分割
-
ip=temp_str[0]
-
port=int(temp_str[1])
-
user=temp_str[2]
-
password=temp_str[3]
-
password=string.split(password,'\n')
-
password = password[0]
-
return(ip,port,user,password)
-
-
-
#修改用户名和密码
-
def connect_modify(ip_port_user_pwd):
-
client = paramiko.SSHClient()
-
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
-
try:
-
client.connect(ip_port_user_pwd[0],ip_port_user_pwd[1],ip_port_user_pwd[2],ip_port_user_pwd[3], timeout=5)
-
# print ip_port_user_pwd[0],ip_port_user_pwd[1],ip_port_user_pwd[2],ip_port_user_pwd[3]
-
except:
-
print ip_port_user_pwd[0],"network not connect"
-
return 0
-
stdin, stdout, stderr = client.exec_command("/bin/echo %s|/usr/bin/passwd --stdin %s" %(setpasswd,setuser))
-
client.close()
-
return 1
-
-
-
-
def main():
-
print "nn","setpassword",setpasswd
-
try:
-
f=open(filepwd,"r")
-
except:
-
print filepwd,"not open ip and passwd file"
-
return 0
-
for lines in f.readlines() :
-
#print lines
-
readline=string.split(lines,'\n')
-
if len(lines) >20:
-
ip_port_user_pwd = get_config_file(lines)
-
re=connect_modify(ip_port_user_pwd)
-
if re ==1 :
-
print ip_port_user_pwd[0],"OK"
-
#else
-
f.close()
-
-
main()
./user.txt文件的生成按自己要求写!(如下,如果windows下写的复制到程序的目录中,dos2unix命令改一下回事符哟)
192.168.1.110,16000,root,111111
192.168.1.111,16000,root,111111
./xxxxxxxxxxx.py
然后楼主去泡了一杯茶!
这个工具是楼主第一次弄出来有一点功能的东西,变量定义得相当的乱,结构也差得不得了,如果有啥子问题随时交流哈!
当然你有更好的。嘿嘿指点一下你也算集德了,你觉得呢!
阅读(1223) | 评论(0) | 转发(0) |