Kadang-kadang saya perlu mengunduh file yang sangat besar dari internet menggunakan torrents (Saya menggunakan Transmission) dan Wi-Fi selalu turun. Saya membeli beberapa router dan modem dan tidak ada yang berfungsi. Saya sudah mengalami masalah ini untuk sementara waktu (~ 10 tahun, dengan Windows dan Mac).
Sekarang saya memutuskan untuk belajar sedikit, dan menulis beberapa AppleScript yang menghubungkan kembali secara otomatis:
repeat
if (do shell script "curl --connect-timeout 1 <WIFI_IP>") = "curl: (7) couldn't connect to host" then
do shell script "networksetup -setairportpower AirPort off"
do shell script "networksetup -setairportpower AirPort on"
do shell script "networksetup -setairportnetwork en1 <ROUTER_NAME> <ROUTER_PASS>"
end if
end repeat
bagian setelah then
bekerja, ia terputus dari Wi-Fi dan menghubungkan kembali, tetapi masalahnya ada pada if
bagian itu, karena saya tidak tahu bagaimana mendeteksi ketika koneksi Wi-Fi terputus oleh torrent. Bagaimana saya harus melakukan ini?
Juga, ulangi dengan interval akan sangat baik, seperti: repeat every 10 seconds
.
delay 300
sebelumrepeat end
agar skrip tidak terus-menerus memeriksa koneksi. 300 detik akan memeriksa setiap 5 menit.Jawaban:
Berikut adalah handler Appplescript sederhana yang saya tulis beberapa waktu lalu untuk menyelesaikan masalah yang sebenarnya ini. Itu ping server OpenDNS (keduanya untuk redundansi) untuk memeriksa apakah koneksi internet sudah habis. Mengembalikan nilai true pada kesuksesan, false pada kegagalan. Cukup salin ke skrip Anda, dan panggil seperti:
Kemudian Anda bisa memasukkan apa pun yang ingin Anda lakukan dalam pernyataan if seperti:
Pawang:
sumber
Can’t make «handler checkInternetConnection» into type boolean
Di rumah, saya memelihara skrip perl yang disebut ping-random-server. Setiap kali saya mencurigai ada masalah jaringan, saya menjalankannya. ping juga merupakan opsi untuk Anda. Jalankan perintah ping dengan ping dalam jumlah terbatas terhadap alamat ip atau nama host yang dikenal merespons ping, dan ambil tindakan jika ping mengembalikan paket loss 100%.
Tentang cara memasukkan ini ke dalam applescript Anda, cobalah
if (do script script "ping -c 10 www.whitehouse.gov | grep mentransmisikan") = "10 paket dikirimkan, 0 paket diterima, 100.0% paket hilang"
Saya belum menguji ini selain dengan menjalankan perintah ping di Terminal dan memeriksa hasilnya.
sumber