Komuttan çıkan çıktıyı gizleme

Evet; Windows icin /dev/null yerine NUL kullanmak lazim.

1 Beğeni

Hmm. Bunu bilmiyordum. Teşekkür ederim.

Ben neye bakilacaksa ona bakilmasi taraftariyim. Wi-Fi’in acik olup olmadigini anlamak icin Wi-Fi’in acik olup olmadigina bakmak lazim mesela, ping komutunun 0 mi dondurdugune degil. Isi yapmaya calisip hata olustugunda kullaniciya bildirmek dogrusu.

Ama illâ boyle bir sey yapilacaksa @reo’e katiliyorum, bu is icin dedike sitelerden birini kullanmak daha iyi olur. (ident.me oyle mi bilmiyorum; kullanicilarini izleyen herhangi bir teknoloji devinin bu servisi kullanilabilir ama) Bir de ICMP yerine HTTP konusmakta fayda var; malum, okullarin/is yerlerinin firewall’lari…

Bir projem için sizin internet konrol kodlarınızı kullanmaya çalıştım fakat sıkıntı yaşıyorum.Sorum şu:

def web_control():
    wifi_b = subprocess.Popen(
        ["ping", "google.com", "-c", "1"],
        stdout=subprocess.PIPE
    ).communicate()[0].decode("utf-8")
    return wifi_b

if web_control() == "Access denied. Option -c requires administrative privileges.":
    print("İnternete bağlı")
else:
    print("İnternete bağlı değil")

bu şekilde kullanınca internete bağlı olmasına rağmen else bloguna giriyor. Neden böyle oluyor?

web_control'den dönen değere baktınız mı? Sizin if koşulunda yazdığınız string ile uyuşmuyor olabilir.

Defalarca denedim.
bağlıysa;

Access denied. Option -c requires administrative privileges.

değilse;

Ping request could not find host google.com. Please check the name and try again.

şeklinde çıktı veriyor.

Hangi işletim sistemini kullanıyorsunuz? -c parametresi Windows7 için geçersiz bir parametre. Bunun yerine -n parametresi kullanılıyor. -c parametresi Ubuntu’da geçerli ama. Ve aldığım çıktı da sizin aldığınız çıktıya benzemiyor.

Windows7’de bilgisayar internete bağlı değilse aşağıdaki yazı ekrana yazdırılıyor.

Ping isteği google.com anabilgisayarını bulamadı. Adı denetleyip yeniden deneyin.

Ubuntu’da bilgisayar internete bağlı değilse aşağıdaki yazı ekrana yazdırılıyor.

ping: google.com: İsim ya da servis bilinmiyor

Yürürlükte olan dil paketi değişirse, alacağımız çıktı da değişir.

Peki aşağıdaki yolu deneseniz olmaz mı?

from urllib.request import urlopen

try:
    urlopen(url="http://ident.me/")
    print("İnternete bağlı.")
except:
    print("İnternete bağlı değil.")

Bu da bir sıkıntı, en iyisi bunu kullanmak değil mi? :

socket de kullanılabilir. Bağlantının olup olmadığını tespit etmek için internet bağlantısına ihtiyaç duyan bütün modüller kullanılabilir.

Kaynak: Get Started  |  Public DNS  |  Google for Developers

Google Public DNS IP addresses

The Google Public DNS IP addresses (IPv4) are as follows:

8.8.8.8
8.8.4.4

import socket

try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("8.8.8.8", 53))
    print("Bağlantı var.")
except:
    print("Bağlantı yok.")

windows 10 pro kullanıyorum. -n yazınca bağlı olduğunu uzun değerler ile bildiriyor işime yaramıyor. Aslında sondaki öneriniz işimi görür. Yanılmıyorsam ident.me IP adresimi veriyor doğru mu?

Doğru evet. Bir önceki mesajımda da belirttim. Kullanılabilmesi için internet bağlantısına ihtiyaç duyan her modülü internete bağlı olup olmadığınızı kontrol etmek için kullanabilirsiniz.