この記事は約8分3秒で読むことができます。

libvirt管理のネットワークを固定ipにするためのhostタグを第3オクテットを指定して作ってみた話

まえがき

awk便利だよなー

def_ip.awk

コード表示

[root@centos vx]# cat def_ip.awk
{
  gsub(/[^ ]+/,"\x5c\x27&\x5c\x27");
  print "<host mac="$2" name="$1" ip=\x5c\x27""192.168."third_octet"."NR+1"\x5c\x27""/>"
}

split_@ファイル

グルーピング後のファイルを対象に実行してみるよ

コード表示

[root@centos vx]# ll split*
-rw-r--r--. 1 root root 48  6月  2 15:32 split_0
-rw-r--r--. 1 root root 48  6月  2 15:32 split_1
-rw-r--r--. 1 root root 48  6月  2 15:32 split_2
[root@centos vx]# seq 0 2 | xargs -t -I@ bash -c 'cat split_@'
bash -c cat split_0 
node1 52:54:00:5d:4a:3f
node2 52:54:00:dc:5b:1b
bash -c cat split_1 
node3 52:54:00:77:33:99
node4 52:54:00:61:72:67
bash -c cat split_2 
node5 52:54:00:88:c2:54
node6 52:54:00:a8:bc:df

実行

第3オクテット100の時と、200の時で実行してみるよ。シングルクォートはエスケープしておく。後続処理のため。

コード表示

[root@centos vx]# seq 0 2 | xargs -I@ bash -c 'gawk -v "third_octet=$((@+100))" -f def_ip.awk split_@'
<host mac=\'52:54:00:5d:4a:3f\' name=\'node1\' ip=\'192.168.100.2\'/>
<host mac=\'52:54:00:dc:5b:1b\' name=\'node2\' ip=\'192.168.100.3\'/>
<host mac=\'52:54:00:77:33:99\' name=\'node3\' ip=\'192.168.101.2\'/>
<host mac=\'52:54:00:61:72:67\' name=\'node4\' ip=\'192.168.101.3\'/>
<host mac=\'52:54:00:88:c2:54\' name=\'node5\' ip=\'192.168.102.2\'/>
<host mac=\'52:54:00:a8:bc:df\' name=\'node6\' ip=\'192.168.102.3\'/>
[root@centos vx]# seq 0 2 | xargs -I@ bash -c 'gawk -v "third_octet=$((@+200))" -f def_ip.awk split_@'
<host mac=\'52:54:00:5d:4a:3f\' name=\'node1\' ip=\'192.168.200.2\'/>
<host mac=\'52:54:00:dc:5b:1b\' name=\'node2\' ip=\'192.168.200.3\'/>
<host mac=\'52:54:00:77:33:99\' name=\'node3\' ip=\'192.168.201.2\'/>
<host mac=\'52:54:00:61:72:67\' name=\'node4\' ip=\'192.168.201.3\'/>
<host mac=\'52:54:00:88:c2:54\' name=\'node5\' ip=\'192.168.202.2\'/>
<host mac=\'52:54:00:a8:bc:df\' name=\'node6\' ip=\'192.168.202.3\'/>
[root@centos vx]# seq 0 2 | xargs -I@ bash -c 'gawk -v "third_octet=$((@+100))" -f def_ip.awk split_@ >def_host_tag_$((@+100))'
[root@centos vx]# ll def_host*
-rw-r--r--. 1 root root 140  6月  2 15:54 def_host_tag_100
-rw-r--r--. 1 root root 140  6月  2 15:54 def_host_tag_101
-rw-r--r--. 1 root root 140  6月  2 15:54 def_host_tag_102
[root@centos vx]# seq 0 2 | xargs -t -I@ bash -c 'cat def_host_tag_$((@+100))'
bash -c cat def_host_tag_$((0+100)) 
<host mac=\'52:54:00:5d:4a:3f\' name=\'node1\' ip=\'192.168.100.2\'/>
<host mac=\'52:54:00:dc:5b:1b\' name=\'node2\' ip=\'192.168.100.3\'/>
bash -c cat def_host_tag_$((1+100)) 
<host mac=\'52:54:00:77:33:99\' name=\'node3\' ip=\'192.168.101.2\'/>
<host mac=\'52:54:00:61:72:67\' name=\'node4\' ip=\'192.168.101.3\'/>
bash -c cat def_host_tag_$((2+100)) 
<host mac=\'52:54:00:88:c2:54\' name=\'node5\' ip=\'192.168.102.2\'/>
<host mac=\'52:54:00:a8:bc:df\' name=\'node6\' ip=\'192.168.102.3\'/>

あとがき

いいかんじだぁ

Leave a Reply

Your email address will not be published. Required fields are marked *