腳本目的:批量修改linux系統使用者密碼
條件:必須是修改的使用者是root,因為隻有root才有權限使用passwd指令
說明:先把ip、使用者、密碼、端口資訊寫到old_info檔案中,腳本從這個檔案讀取對應的資訊,利用expect免互動登陸系統。将随機生成的8位密碼修改為root使用者新密碼。然後将新密碼儲存到net_info檔案中。
1
2
3
4
5
<code># cat old_info </code>
<code># ip user passwd port</code>
<code>#------------------------------------------------</code>
<code>192.168.18.217 root 123456 22</code>
<code>192.168.18.218 root 123456 22</code>
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<code># cat change_pass.sh</code>
<code>#!/bin/bash</code>
<code>old_info=~</code><code>/old_info</code>
<code>new_info=~</code><code>/new_info</code>
<code>for</code> <code>ip </code><code>in</code> <code>`</code><code>awk</code> <code>'/^[^#]/{print $1}'</code> <code>$old_info`; </code><code>do</code>
<code> </code><code>user=`</code><code>awk</code> <code>-</code><code>v</code> <code>i=$ip </code><code>'{if(i==$1)print $2}'</code> <code>$old_info`</code>
<code> </code><code>pass=`</code><code>awk</code> <code>-</code><code>v</code> <code>i=$ip </code><code>'{if(i==$1)print $3}'</code> <code>$old_info`</code>
<code> </code><code>port=`</code><code>awk</code> <code>-</code><code>v</code> <code>i=$ip </code><code>'{if(i==$1)print $4}'</code> <code>$old_info`</code>
<code> </code><code>new_pass=`mkpasswd -l 8`</code>
<code> </code><code>echo</code> <code>"$ip $user $new_pass $port"</code> <code>>> $new_info</code>
<code>expect -c "</code>
<code> </code><code>spawn </code><code>ssh</code> <code>-p$port $user@$ip</code>
<code> </code><code>set</code> <code>timeout 2</code>
<code> </code><code>expect {</code>
<code> </code><code>\"(</code><code>yes</code><code>/no</code><code>)\" {send \"</code><code>yes</code><code>\r\";exp_continue}</code>
<code> </code><code>\"password:\" {send \"$pass\r\";exp_continue}</code>
<code> </code><code>\"$user@*\" {send \"</code><code>echo</code> <code>\'$new_pass\' |</code><code>passwd</code> <code>--stdin $user\r </code><code>exit</code><code>\r\";exp_continue}</code>
<code> </code><code>#\"$user@*\" {send \"df -h\r exit\r\";exp_continue}</code>
<code> </code><code>}"</code>
<code>done</code>
<code># cat new_info </code>
<code>192.168.18.217 root n8wx3mu% 22</code>
<code>192.168.18.218 root c87;znnl 22</code>