天天看點

Linux Python腳本 一鍵修改大批量叢集主機密碼 提高工作效率

1.安裝Python-3.8.10.tgz

2.編寫腳本 passwd

vim paswd
IP 使用者名 old密碼  new密碼
           

3.編寫更改密碼py腳本讀取passwd檔案内容

#!/usr/bin/env python
# coding:utf-8

import paramiko
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
test_fail='result.fail'
if os.path.exists(test_fail):
    os.remove(test_fail)

test_ok='result.ok'
if os.path.exists(test_ok):
    os.remove(test_ok)

pass_file=open('passwd','r')
for line in pass_file:
    inform=line.split()
    ipaddr=inform[0]
    username=inform[1]
    old_pass=inform[2]
    new_pass=inform[3]
    port=22
    try:
        ssh=paramiko.SSHClient()
        ssh.load_system_host_keys()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname=ipaddr,username=username,port=22,password=old_pass,timeout=5)

        stdin,stdout,stderr=ssh.exec_command('/usr/bin/passwd')
        stdin.write(old_pass + '\n' + new_pass + '\n' + new_pass + '\n')
        print(stderr.read().decode())

        ret_ok=open('result.ok','a+')
        ret_ok.write(ipaddr+" is OK\n")
        ret_ok.close()
        ssh.close()
    except Exception as e:
        print(e)
        ret_fail=open('result.fail','a+')
        ret_fail.write(ipaddr+" is failed\n")
        ret_fail.close()
pass_file.close()
           

4.驗證密碼是否修改成功 passwd 寫三列,成功傳回 result.ok 失敗傳回 result.fail,檔案裡面記錄IP

#!/usr/bin/env python
# coding:utf-8

import paramiko
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
test_fail='result.fail'
if os.path.exists(test_fail):
    os.remove(test_fail)

test_ok='result.ok'
if os.path.exists(test_ok):
    os.remove(test_ok)

pass_file=open('passwd','r')
for line in pass_file:
    inform=line.split()
    ipaddr=inform[0]
    username=inform[1]
    password=inform[2]
    port=22
    try:
        ssh=paramiko.SSHClient()
        ssh.load_system_host_keys()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname=ipaddr,username=username,port=22,password=password,timeout=5)
        stdin,stdout,stderr=ssh.exec_command('echo $HOSTNAME')
        ret_ok=open('result.ok','a+')
        ret_ok.write( ipaddr+" " +stdout.read().decode())
        ret_ok.close()
        ssh.close()
    except Exception as e:
        print(e)
        ret_fail=open('result.fail','a+')
        ret_fail.write(ipaddr+" is failed\n")
        ret_fail.close()
pass_file.close()