(Saya menyadari ini adalah pertanyaan lama, tetapi Google membawa saya ke sini karena saya mencoba mencari tahu apa change
dan apa yang replace
dilakukan dan bagaimana mereka berbeda).
Saya percaya bahwa keduanya replace
dan change
digunakan untuk memodifikasi alamat yang ada. Mempertimbangkan:
ip addr add 192.168.1.10/32 dev dummy0
Ini membuat saya:
32: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.10/32 scope global dummy0
valid_lft forever preferred_lft forever
inet6 fe80::58ec:58ff:fe4f:d135/64 scope link
valid_lft forever preferred_lft forever
Jika saya menjalankan perintah yang sama lagi, saya mendapatkan kesalahan:
# ip addr add 192.168.111.10/32 dev dummy0
RTNETLINK answers: File exists
Jika saya ingin memodifikasi tanda pada alamat itu, saya dapat menggunakan salah satu change
atau replace
. Di sini, saya gunakan ip addr change
untuk memodifikasi preferred_lft
dan valid_lft
pengaturan pada alamat itu:
# ip addr change 192.168.111.10/32 dev dummy0 preferred_lft 300 valid_lft 300
# ip addr show dummy0
32: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
inet 192.168.111.10/32 scope global dynamic dummy0
valid_lft 298sec preferred_lft 298sec
inet6 fe80::58ec:58ff:fe4f:d135/64 scope link
valid_lft forever preferred_lft forever
Perilaku ip addr replace
identik. Bahkan, jika Anda melihat kode, mereka menghasilkan tindakan yang hampir identik:
if (matches(*argv, "change") == 0 ||
strcmp(*argv, "chg") == 0)
return ipaddr_modify(RTM_NEWADDR, NLM_F_REPLACE, argc-1, argv+1);
if (matches(*argv, "replace") == 0)
return ipaddr_modify(RTM_NEWADDR, NLM_F_CREATE|NLM_F_REPLACE, argc-1, argv+1);
Sepertinya maksudnya di sini adalah bahwa change
hanya akan mengubah alamat yang ada, sementara replace
akan mengubah alamat yang ada atau membuat yang baru jika alamat yang ditentukan tidak ada. Dalam praktiknya, sepertinya keduanya change
dan replace
akan menambahkan alamat jika belum ada.
Jika Anda benar-benar ingin menambahkan alamat baru dan menghapus yang lama, Anda harus melakukannya dalam dua langkah, menggunakan ip addr del
diikuti oleh ip addr add
(atau sebaliknya, tentu saja).
NO
P0
s :()