1. 程式人生 > >python批量修改linux主機密碼

python批量修改linux主機密碼

open fail 通過 paramiko 如果 policy 文件 主機 指導

+++++++++++++++++++++++++++++++++++++++++++
標題:python批量修改Linux服務器密碼
時間:2019年2月24日
內容:基於python實現批量修改linux主機密碼。
作者:Bruce
重點:python使用SSH模塊+循環操作,實現linux主機密碼批量修改。
註意:本腳本是在實驗環境下生成的,如果線上使用,請先進性多次測試,防止出現問題。
+++++++++++++++++++++++++++++++++++++++++++
1. 包含文件
1.1 腳本文件
註意:建議不要直接復制使用,在linux平臺用vi創建文件,將內容寫進去,使用tab鍵進行縮進,本文中的縮進可能存在問題。


import paramiko
import os

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


    ssh.load_system_host_keys()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=ipaddr,username=username,password=old_pass,timeout=5)    //連接到服務器
    ssh.exec_command(‘echo "%s"|passwd --stdin root‘%new_pass)    //修改服務器密碼
    ret_ok=open(‘result.ok‘,‘a+‘)    //輸出結果

    ret_ok.write(ipaddr+" is OK\n")
    ret_ok.close()
    ssh.close()
  except Exception as e:
    ret_fail=open(‘result.fail‘,‘a+‘)    //輸出結果
    ret_fail.write(ipaddr+" is failed\n")
    ret_fail.close()
pass_file.close()

1.2 配置文件
註意:
文件名為passwd,為題python腳本提供數據
文件內容如下:
192.168.44.100 root pass_old1 pass_new1
192.168.44.110 root pass_old2 pass_new2
192.168.44.120 root pass_old3 pass_new3

1.3 腳本使用指導文件
步驟一:上傳壓縮包到Linux主機
步驟二:unzip change_password.zip
步驟三:chmod a+x change_pass.py
步驟四:將服務器信息寫入passwd文件
第一列 服務器IP地址
第二列 需要修改密碼的用戶名
第三列 原始密碼
第四列 新密碼
註意:每列之間使用空格隔開,並且passwd與change_pass.py在同級目錄下
步驟五:python change_pass.py
註意:腳本執行完成後,在當前目錄下生成result.ok和reslut.fail分別記錄主機密碼的修改的成功與失敗的情況(成功或失敗是通過ssh是否連接成功進行判定的)

python批量修改linux主機密碼