天天看點

linux系統批量修改使用者密碼

腳本目的:批量修改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>&gt;&gt; $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>

繼續閱讀