2017-04-12 90 views
0

我試圖從主機文件的特定部分使用shell腳本獲取屬性文件(主管文件)的值。使用特定部分的shell從屬性文件獲取值

所以我有這樣的hosts文件:

[windows] 
myd-vm14945.company.net 
myd-vm01431.company.net 

[windows-web] 
vmpweb314.company.net 

[linux] 
myd-vm11409.company.net 
myd-vm14296.company.net 
myd-vm20125.company.net 
mydvm0091.company.net 

而且這個劇本我想運行,當在Linux的部分的每個服務器應更換參數$ {remote_server的}在shell腳本:

#add remote server to ansible host known_host file 
ssh-keyscan ${REMOTE_SERVER}>> /root/.ssh/known_hosts 
#remmber password 
sshpass -p ROOT_PASSWORD ssh [email protected]${REMOTE_SERVER} 

所以最後的結果會是這樣的:

#add remote server to ansible host known_host file 
ssh-keyscan myd-vm11409.company.net >> /root/.ssh/known_hosts 
ssh-keyscan myd-vm14296.company.net>> /root/.ssh/known_hosts 
#remmber password 
sshpass -p ROOT_PASSWORD ssh [email protected] 
sshpass -p ROOT_PASSWORD ssh [email protected] 

等等......對於Linux下的所有值。

回答

1

如果你真的想從bash中做到這一點,請參閱以下awk魔術,從Read certain key from certain section of ini file (sed/awk ?)

部分採取這樣你就可以創建下面的腳本,調整您的庫存文件和部分並運行它!

addkeys.sh

#!/bin/bash 
INVENTORY="inventory.ini" 
SECTION="[linux]" 

I_HOSTS="$(awk -v section="$SECTION" ' # Enable a flag when the line is like your section 
$0==section{ f=1; next }    # For any lines with [ disable the flag 
/\[/{ f=0; next }      # If flag is set - print the line 
f && $0' "$INVENTORY")" 

for I_HOST in $I_HOSTS 
do 
    #add remote server to ansible host known_host file 
    echo "ssh-keyscan "$I_HOST" >> /root/.ssh/known_hosts" 
    #remmber password 
    echo "sshpass -p ROOT_PASSWORD ssh "[email protected]$I_HOST"" 
done 

結果與回波sshpass和鍵掃描commads:

ssh-keyscan myd-vm11409.company.net >> /root/.ssh/known_hosts 
sshpass -p ROOT_PASSWORD ssh [email protected] 
ssh-keyscan myd-vm14296.company.net >> /root/.ssh/known_hosts 
sshpass -p ROOT_PASSWORD ssh [email protected] 
ssh-keyscan myd-vm20125.company.net >> /root/.ssh/known_hosts 
sshpass -p ROOT_PASSWORD ssh [email protected] 
ssh-keyscan mydvm0091.company.net >> /root/.ssh/known_hosts 
sshpass -p ROOT_PASSWORD ssh [email protected] 
相關問題