シェルスクリプトでネットワーク接続されるのを待つ
この記事は最初の投稿日から21年経過しています。内容が古い可能性があります。
fetchmail でメールを取る時にシェルスクリプトからネットワーク接続(ダイアルアップや無線LAN)を行う必要があります。
シェルスクリプトからのネットワーク接続は、netctl で行うことができますが、接続したのかどうかを待つ必要があります。
私は、次のようなシェルスクリプトで待っています。
#!/bin/sh PATH=/home/QtPalmtop/bin:/root/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/zaurus/bin echo -n connecting netctl -c COUNT=0 while [ -z "`route -n | grep "^0.0.0.0"`" ]; do COUNT=`expr $COUNT + 1` echo -n . if [ $COUNT -eq 10 ] then netctl -d echo QPE/Network 'stop()' > /var/spool/inputhelper/qcop echo "can't connect." exit 1 fi sleep 2 done echo connected.
20 秒まってもつながらなければ、エラーになります。
ネットワーク接続ですが、今は netctl ではなくて、InputHelperのqcopメッセージ送信機能を使って次のようにしています。
#!/bin/sh PATH=/home/QtPalmtop/bin:/root/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/home/zaurus/bin echo -n connecting echo QPE/Network 'connectRequest()' > /var/spool/inputhelper/qcop COUNT=0 while [ -z "`route -n | grep "^0.0.0.0"`" ]; do COUNT=`expr $COUNT + 1` echo -n . if [ $COUNT -eq 10 ] then echo QPE/Network 'stop()' > /var/spool/inputhelper/qcop echo "can't connect." exit 1 fi sleep 2 done echo connected.
このほうが早いように感じます。