2017-10-21 146 views
0

我試圖做的是有鹽的設置基於從for循環的$i當前值內部主機的IP。我已經嘗試了以下方法,但在修改包含以下行的網絡腳本時失敗:192.168.200.100,它存在於所有39個節點中。

for ((i=2; i<=30; i++)); do sudo salt -L "host$i.dev.mysite.com" cmd.run "sed -i "s/192.168.200.100/192.168.200.$i/" /etc/sysconfig/network-scripts/ifcfg-bond1; done"

結果我期待是有從192.168.200.100修改爲192.168.200.2

host2.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.2 
host3.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.3 
host4.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.4 
host5.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.5 
host6.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.6 
host7.dev.mysite.com /etc/sysconfig/network-scripts/ifcfg-bond1 = 192.168.200.7 
etc... 
+0

什麼不工作呢? – Inian

+0

這只是引用的問題。它應該是:'爲我在{2..30}; do sudo salt -L「host $ i.dev.mysite.com」cmd.run「sed -i's/192.168.200.100/192.168.200。$ i /'/ etc/sysconfig/network-scripts/ifcfg-bond1 「; done' – hek2mgl

+0

@Inian,我收到這個鏈接如下:http://dpaste.com/3XK9J2Z –

回答

0

像這樣的事情每個hostX.dev.mysite.com bond1文件?

for ((i=2;i<=30;i++)); do 
    sudo salt -L "host${i}.dev.mysite.com" cmd.run "sed -r -i \"[email protected]([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)[0-9]{1,3}\[email protected]\[email protected]\" /etc/sysconfig/network-scripts/ifcfg-bond1" 
done 
+0

使用zsh時,我得到這個30x的'zsh:找不到匹配的結果:sed -ri s @([0-9] 1. [0-9] 1. [0-9] 1。)[0-9 ] 1 $ @ 12 @在/ etc/sysconfig/network中的腳本/的ifcfg-bond1.' 使用bash的時候,我收到這樣的:'慶典:附近意外的標記語法錯誤'('' –

+0

我想你的劇本究竟它是如何寫雖然它不是示數出來,我越來越相似,我張貼以上相同的行爲。http://dpaste.com/3XK9J2Z sed的版本,我使用的是4.2.2。我對你的意思不確定通過sed是一個cmd.run參數。請詳細說明一下嗎? –

+0

我編輯了我的代碼,請現在試試。 –