Bagaimana cara menulis AppleScript yang terhubung kembali otomatis ke Wi-Fi?

3

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 thenbekerja, ia terputus dari Wi-Fi dan menghubungkan kembali, tetapi masalahnya ada pada ifbagian 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.

Adam
sumber
Saya akan menambahkan penundaan seperti delay 300sebelum repeat endagar skrip tidak terus-menerus memeriksa koneksi. 300 detik akan memeriksa setiap 5 menit.
Vickash

Jawaban:

1

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:

set connected to checkInternetConnection

Kemudian Anda bisa memasukkan apa pun yang ingin Anda lakukan dalam pernyataan if seperti:

if connected then
    -- Do stuff here
end if

Pawang:

on checkInternetConnection()
    -- Ping the primary OpenDNS server.
    try
        set pingResult1 to do shell script "ping -c 1 208.67.222.222"
    on error
        set pingResult1 to ""
    end try

    -- Check the results returned and return true or false.
    set p to number of paragraphs in pingResult1
    if p < 5 then
        -- Ping another Open DNS server for redundancy.
        try
            set pingResult2 to do shell script "ping -c 1 208.67.220.2220"
        on error
            set pingResult2 to ""
        end try

        set p to number of paragraphs in pingResult2
        if p < 5 then return false
    else
        return true
    end if
end checkInternetConnection
Vickash
sumber
mengembalikan kesalahanCan’t make «handler checkInternetConnection» into type boolean
ljs.dev
0

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.

dgn kasar
sumber