Saya menjalankan skrip yang bergantung pada jaringan yang sedang menyala dan berbagi jaringan dipasang. Script berjalan saat login (yang terjadi secara otomatis setelah boot). Masalahnya adalah pada saat skrip berjalan, saya biasanya belum memiliki alamat IP (DHCP). Saat ini saya hanya tidur skrip selama 15-an, tapi saya tidak suka pendekatan ini sama sekali, karena saya ingin dapat memberi tahu pengguna jika ada sesuatu yang salah.
Apa rencana saya, adalah loop sementara saya belum memiliki alamat IP dan melanjutkan ketika saya melakukannya. Yang terpenting, ia harus keluar setelah beberapa saat. Apa yang saya if [ ifconfig | grep "192.168.100" ];
pikirkan adalah tetapi yang terjadi adalah grepconsume ];
dan tidak menyukainya. Kemudian bash juga menjadi kesal, karena tidak dapat menemukan ];
yang makan grep. Dan kemudian saya bahkan belum mengimplementasikan time-out.
Seseorang menyarankan untuk menjaga variabel, dan tidur untuk, katakanlah, satu detik di setiap iterasi dan tingkatkan variabel ini setiap kali. Berikut ini skrip lengkap saya (tidak berfungsi) (Saya cukup baru untuk bash scripting):
x=0
while [ ifconfig | grep "192.168.100." > /dev/null ]; do
echo "no nework"
if "$x" -gt 200; then
#Time out here
exit 1
x=$((x+1))
sleep .1
fi
done
#continue with rest of script...
Setiap petunjuk ke arah yang benar akan sangat dihargai!
grep
output ke /dev/null
. Gunakan -q
opsi sebagai gantinya. Dan juga saya tidak mengerti jika ifconfig adalah ide yang bagus. Mengapa tidak menggunakan ping
saja?
ping
bisa gagal tergantung pada jaringan yang dimaksud. Lebih baik memeriksa konfigurasi sistem yang sedang berjalan.
network-online.target
...