Bash Script ile LXI destekli cihazlardan ekran görüntüsü alma

Sercan

--
Katılım
17 Mart 2019
Mesajlar
5,300
LXI destekli cihazlarınız ağa bağlı ise bunların ekran görünütsünü aşağıdaki gibi bir komut ile rahatlıkla alabiliyorsunuz.

Kod:
lxi screenshot -a IP_ADRES DOSYA_ISMI

Bu komut bmp dosyası üretiyor. Buraya kadar herhangi bir sorun yok. Fakat bu ekran görüntüsünü olduğu gibi foruma yükleyemiyorsunuz. Dolayısıyla bmp dosyasını başka bir formata dönüştürmek gerekiyor. Ben png'ye dönüştüyorum.

Eğer LXI gui kullanmıyorsanız bütün bunları benim gibi tek tek komutlarla yapmanız gerekiyor. Gui kullanmak istemiyorum çünkü LXI uygulamasını çalıştır, ağı tarasın, cihaza bağlan vs bir sürü iş.
 
Son düzenleme:
Ben bu işlemleri otomatik hale getirmek için bash script geliştirdim. Bu şekilde 3-4 sn içinde ekran görüntüsü alıp, png'ye çevirip artık bmp dosyasını siliyorum.

Scriptin çalışması için cihazların IP adreslerinin sabit olması gerekiyor. Birde ben klasör olarak masaüstünde screenshot isimli bir klasörü kullanıyorum. Eğer klasör yoksa script bunu da otomatik oluşturuyor. Dolayısıyla işim bittiğinde temizlemek de kolay oluyor. Klasörü komple siliyorum.

Script'in bütün hali en altta var. Şimdi biraz da parça parça scripti açıklayayım.

Her şeyden önce klasör oluşturuyorum.

Bash:
path="$HOME/Desktop/screenshot"
if [ ! -d "$path" ]; then
    mkdir -p "$path"
fi

Daha sonra ağa bağlı cihazları listeliyorum ve kullanıcının bir cihaz seçmesini bekliyorum. IP adreslerini değiştirmeyi unutmayın.

Bash:
echo "Lütfen bir cihaz seçin:"
echo "1. Siglent SDS 1000X/2000X series oscilloscope"
echo "2. Siglent SDM 3000/3000X series digital multimeter"
echo "3. Siglent SDG 1000X/2000X/6000X series waveform generator"
echo "4. Rigol DL3000 Series Programmable DC Electronic Load"
echo "5. Rigol DP 800 series power supply"

read -p "Seçiminizi yapın (1-5 arası bir sayı girin): " choice

Kullanıcı bir giriş yaptıktan sonra seçime uygun şekilde değişkenleri tanımlıyorum.

Bash:
case "$choice" in
    1)
        device_name="SDS2504X_Plus"
        plugin_name="siglent-sds"
        ip_address="XX.XX.XX.X1"
        ;;
    2)
        device_name="SDM3065X"
        plugin_name="siglent-sdm3000"
        ip_address="XX.XX.XX.X2"
        ;;
    3)
        device_name="SDG2122X"
        plugin_name="siglent-sdg"
        ip_address="XX.XX.XX.X3"
        ;;
    4)
        device_name="DL3031A"
        plugin_name="rigol-dl3000"
        ip_address="XX.XX.XX.X4"
        ;;
    5)
        device_name="DP832A"
        plugin_name="rigol-dp800"
        ip_address="XX.XX.XX.X5"
        ;;
    *)
        echo "Geçersiz seçim! Lütfen 1 ile 5 arası bir sayı girin."
        exit 1
        ;;
esac

Henüz ne işe yaradığını bilmiyorum ama LXI komutunu --help ile dökümanlarına baktığımda screenshot için plugin desteği olduğunu söylüyor. Bendeki bütün cihazların plugin desteği olduğu için plugin_name olarak hepsini yazdım ve ilerleyen komutlarda yer verdim. Kullandığınız cihazın desteği olup olmadığına lxi -l komutu ile bakabilirsiniz.

Şimdi dosya ismi oluşturuyorum

Bash:
filename="$path/${device_name}_$(date +"%Y%m%d_%H%M%S")"

Artık sırası ile ilgili komutları işliyorum. Birinci satır ekran görüntüsü alıyor, ikinci satır bunu png'ye çeviriyor. Son satırda ise bmp dosyasını siliyorum.

Bash:
lxi screenshot -a "$ip_address" -p "$plugin_name" "$filename.bmp"
convert "$filename.bmp" "$filename.png"
rm "$filename.bmp"

İşlem tamamladı kullanıcıya bilig verip 2 saniye sonra pencereyi kapatıyorum.

Bash:
echo "İşlem tamamlandı: $filename.png oluşturuldu."
sleep 2
exit 0

Yukarıda açıkladığım bash'in tamamını da ekliyorum. İyileştirme, hata düzeltme vb katkılarınız olursa bilmek isterim.

Bash:
#!/bin/bash
path="$HOME/Desktop/screenshot"
if [ ! -d "$path" ]; then
    mkdir -p "$path"
fi

echo "Lütfen bir cihaz seçin:"
echo "1. Siglent SDS 1000X/2000X series oscilloscope"
echo "2. Siglent SDM 3000/3000X series digital multimeter"
echo "3. Siglent SDG 1000X/2000X/6000X series waveform generator"
echo "4. Rigol DL3000 Series Programmable DC Electronic Load"
echo "5. Rigol DP 800 series power supply"

read -p "Seçiminizi yapın (1-5 arası bir sayı girin): " choice

case "$choice" in
    1)
        device_name="SDS2504X_Plus"
        plugin_name="siglent-sds"
        ip_address="XX.XX.XX.X1"
        ;;
    2)
        device_name="SDM3065X"
        plugin_name="siglent-sdm3000"
        ip_address="XX.XX.XX.X2"
        ;;
    3)
        device_name="SDG2122X"
        plugin_name="siglent-sdg"
        ip_address="XX.XX.XX.X3"
        ;;
    4)
        device_name="DL3031A"
        plugin_name="rigol-dl3000"
        ip_address="XX.XX.XX.X4"
        ;;
    5)
        device_name="DP832A"
        plugin_name="rigol-dp800"
        ip_address="XX.XX.XX.X5"
        ;;
    *)
        echo "Geçersiz seçim! Lütfen 1 ile 5 arası bir sayı girin."
        exit 1
        ;;
esac

lxi screenshot -a "$ip_address" -p "$plugin_name" "$filename.bmp"
convert "$filename.bmp" "$filename.png"
rm "$filename.bmp"

echo "İşlem tamamlandı: $filename.png oluşturuldu."

sleep 2
exit 0
 
Son düzenleme:
Yukarıda oluşturduğum scripti screenhot.sh ismi ile bir klasöre kaydettim. Bu scripti çalıştırırken sorun yaşamamak için yetkileri kontrol etmeyi unutmayın. Dosyanızın bulunduğu konuma aşağıdaki gibi yetki verebilirsiniz.

Kod:
chmod +x /home/sercan/Dell_U4320Q/screenhot.sh

Şimdi bunu komut olarak kısayola ekliyorum. Ben konsole uygulaması kullandığım için aşağıdaki gibi çağırıyorum. Xterm vs kullanıyorsanız kısayol çağrıma işlemini ve tabi sh dosyanızın tam yolunu buna göre değiştirmeniz gerekecektir.

Bash:
konsole -e /bin/bash -c "/home/sercan/Dell_U4320Q/screenshot.sh"
1715622913013.png

Kısayol tuşunu da ekledikten sonra işlem tamam. Artık her Ctrl+< tuş kombinasyonuna bastığımda aşağıdaki ekran karşıma geliyor.
1715622923733.png

Yaptığım seçime göre masaüstüne ilgili ekran görüntüsünü tarihi ile birlikte kaydedip 2 saniye sonra kendini imha ediyor.

1715622944021.png
 
Son düzenleme:
İleride lxi özelliğine sahip bir cihaz aldığımda kullanırım :) Eline emeğine sağlık abi
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,735
Mesajlar
114,850
Üyeler
2,756
Son üye
Sagankam

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Back
Top