Python'da ağdaki cihazları listeleme

Konu başlığında bahsettiğim gibi internet ağımdaki tüm makineleri nasıl listeleyebilirim ?

Bu arada yeniyim, hepinize selamlar.

Şu şekilde:

import subprocess

subprocess.Popen(["netsh", "wlan", "show", "network"])

Bu kod sadece Windows için.

Bu da Linux için:

import subprocess

subprocess.Popen(["nmcli", "dev", "wifi"])
1 Beğeni

Nmap modulunu arastira bilirsiniz

Bu kodların aşağıdakinden farkı ne?

import os
os.system("nmcli dev wifi")

Farkı yoksa subprocess.Popen(list()) ne işe yarayabilir?

subprocess.Popen() ile çıktıyı daha rahat kontrol edebilirsiniz.

Şöyle bir farkı da var:

Aşağıdaki kodları bir betik dosyasına yazın, kaydedin ve dosyayı çalıştırın:

import os
os.system("notepad")

Notepad açılacaktır ama işlem sonlanmayacaktır. Yani cmd.exe’ de Notepad kapatılana kadar beklemek zorunda kalacaksınız.

Ama kodları şu şekilde yazarsanız:

import subprocess
subprocess.Popen(["notepad"])

Notepad açılacak ve betiğin çalışması sonlanacaktır.

Hani bazı programlar güncellenirken kapatılır, sonra kendi kendine tekrar açılır ya, işte böyle durumlarda subprocess.Popen()'i kullanabilirsiniz.

4 Beğeni

Argüman göndermesi kolaymış. Ama çıktıyı kontrol etmek nasıl kolay anlamadım:

>>> import subprocess as sp
>>> sp.Popen("./deneme")
<subprocess.Popen object at 0x7fd92b19b748>
>>> Hello World!  #Bu deneme programıyla ilgili. E. K.'un ortasına yazdırıyor

>>> 

Bu arada deneme sizin compile.py ile derlenmiş bir python dosyası :smile:

Çıktıyı şu şekilde bir değişkene alabilirsiniz:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import subprocess

process = subprocess.Popen("./hello.py", stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)

Ayrıca dosyayı ./deneme şeklinde çalıştırmak yerine deneme yazarak çalıştırmak istiyorsanız aşağıdaki adımları izleyin.

  1. HOME dizininde ismi bin olan bir klasör oluşturun.
~$ mkdir bin
  1. deneme dosyasını bu bin klasörünün içine atın.
~$ mv deneme ~/bin
  1. HOME dizinindeki .bashrc dosyasını chmod +x ile erişime açın.
~$ chmod +x .bashrc
  1. Sonra dosyayı herhangi bir metin editörü ile açın.
~$ gedit .bashrc
  1. Dosyanın son satırına aşağıdakini ekleyin.
export PATH="$HOME/bin:$PATH"
  1. Dosyayı kaydedin ve çıkın.

Artık deneme dosyasını her dizinden, komut satırına sadece deneme yazıp sonra enter tuşuna basarak çalıştırabilirsiniz.

Teşekkür ederim. Ama benim bildiğim başka yöntemler de var. Mesela dosyayı /bin klasörüne atmak. Veya ~/.local/bin içine atmak.

Bir blogunuz yok mu? Bu tarz yazıları orada da paylaşırsanız çok güzel olur.

Linux’de derlenmiş bir C dosyası Windows’ta çalışır mı? Linux’de derlenen C dosyasının uzantısı ne?

Doğru söylüyorsunuz. Birden fazla yöntemi var.
Bir bloğum yok. Denk geldikçe paylaşımlar yapıyorum.
Linux’te derlenmiş bir C dosyası Windows’ta çalışır mı şimdilik bilmiyorum. Hiç denemedim. Ama denerim. Linux’te derlenen c dosyasının uzantısı yok.

O zaman Windows’ta çalışmamalı. Ben Windows kullanırken 2 gün C compiler aradım. Cygwin dışında bir şey bulamadım. Sonunda dayanamayıp Linux’e geçtim. :smile:

Cygwin olur, mingw olur… Yanılmıyorsam mingw git ile birlikte geliyordu. Git de kurabilirsiniz.

For the beginning I would say it is enough to Install MinGW. If you have installed it you find in the bin folder a gcc.exe which is the Compiler. Either set the PATH Variable to the bin folder or go directly to this folder. In terminal use:

  gcc your_C_file.c

The output will be an exe.

Kaynak

Buraya göre Windows’ta derlenen C dosyaları Windows oluyormuş. Cython ile dönüştürüp Windows’ta derlersek EXE olacağına göre, Pyinstaller ne işe yarıyor?

Pyinstaller da exe’ye çeviriyor.

Yani benim dediğim gibi yapabiliyorsak neden Pyinstaller kullanıyoruz? Bir eksiği olmalı ki Pyinstaller kullanıyoruz. Bu eksikten bahsediyorum.

Pyinstaller, kolaylık sağlayan bir kütüphane. Derlemek istediğiniz dosyanın bazı özelliklerini pyinstaller sayesinde hızlıca belirleyebiliyorsunuz. Windows’ta bir python dosyasını gcc’yi kullanarak Linux’te derlediğimiz gibi derleyemiyoruz. (Bknz: Python programınızı platformlararası olacak şekilde derlemek) Neden pyinstaller sıkça tercih ediliyor, çünkü python kullanıcısına aşina olduğu bir spec dosyası sunarak py dosyalarının kısa zamanda kolayca derlenmesini sağlıyor.

yalnız bu kod bağlandığımız wifiyi gösteriyor

nasıl yani?
derlenmiş derken?

anlayamadım pythonu gcc ile derleyebiliyor muyuz?