統計各節點ssh免密登錄授權信息
阿新 • • 發佈:2018-06-03
ansible 為了維護方便,生產環境ansible到其他所有節點所有賬號做了免密登錄,根據安全需求,現需要統計所有節點所有賬號的ssh免密登錄授權信息。為了省時省力,將以ansible+shell的形式實現,如下:
1、準備好ansible的hosts文件,根據賬號名稱分成多個組,其中root組包括所有節點的IP地址。
2、準備一個文件包括所有節點的IP地址
3、playbook文件,authfile.yml
--- - hosts: root gather_facts: false remote_user: root tasks: - name: cp root auth file shell: source ~/.bash_profile && source /etc/profile && mkdir -p /tmp/myauthdir && cp /root/.ssh/authorized_keys /tmp/myauthdir/`hostname`_root.txt - hosts: sumapay gather_facts: false remote_user: root tasks: - name: cp sumapay auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/sumapay/.ssh/authorized_keys /tmp/myauthdir/`hostname`_sumapay.txt - hosts: sumapay25 gather_facts: false remote_user: root tasks: - name: cp sumapay25 auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/sumapay25/.ssh/authorized_keys /tmp/myauthdir/`hostname`_sumapay25.txt - hosts: glassfish gather_facts: false remote_user: root tasks: - name: cp glassfish auth file shell: source ~/.bash_profile && source /etc/profile && cp /home/glassfish/.ssh/authorized_keys /tmp/myauthdir/`hostname`_glassfish.txt
4、shell腳本文件,authfile.sh
#!/bin/bash #授權文件歸集目錄 authfile_dir="authfile" #在各節點生成"主機名_用戶"格式的授權文件 ansible-playbook -i /etc/ansible/hosts authfile.yml #拷貝各節點生成後的授權文件 cpauthfile(){ if [[ ! -d $authfile_dir ]];then mkdir $authfile_dir fi for i in `cat ip.txt` do scp root@${i}:/tmp/myauthdir/* $authfile_dir done } #過濾個授權文件免密登錄主機,並生成列表 create_table(){ if [[ -s filename.txt ]];then echo > filename.txt fi for i in `ls $authfile_dir` do echo $i|awk -F "." '{print $1}' >> filename.txt cat $authfile_dir/$i|awk '{print $3}'|sort -u >> filename.txt echo "" >> filename.txt done } cpauthfile create_table
5、執行authfile.sh,生成filename.txt文件,包含所有節點、所有用戶的ssh免密登錄授權信息。
統計各節點ssh免密登錄授權信息