Szkriptek: Python, Perl, Bash, ...

[Megoldva] Find parancs találatában speciális karakter van, és ez miatt megáll

Sziasztok. Olyan problémába ütköztem, hogy szerettem volna egy olyan parancsot megírni és futtatni, ami egy megadott útvonalon rekurzívan megkeresi az összes jpg, jpeg, png kiterjesztésű filet, majd ezeknek a fileoknak az exif adataiból kikeresi az orientetion adatát, majd ha nem üres és nem egyenlő eggyel, akkor írja ki ezt a file nevet (a végső cél egy konverzió lesz, de egyelőre kiiratni akartom, mert hibára fut).Az alábbi parancs lett a végeredmény:
 

find "/home/Data/Pictures" -type f \( -iname \*.jpg -o -iname \*.jpeg -o -iname \*.png \) | parallel 'orientation="$(identify -format '%[EXIF:Orientation]\n' -- "{}" 2> /dev/null)"; if [ -n "$orientation" ] && [ "$orientation" != 1 ]; then echo "{}"; fi'

Ez le is futna rendben, ahogy egy apró tesztben kipróbáltam, viszont mikor az éles könyvtáron akartam kipróbálni, akkor jött egy hibaüzenet x másodperc múlva, miszerint a "Fender '62 Jaguar.jpg" -vel gondja van. És nem csoda, mert van benne egy ' jel, ami speciális karakternek minősül, és ezért pukkan meg.
Hogyan kellene kiegészíteni ezt a parancsot, hogy a speciális karaktereket ne annak értelmezze, hanem a file részének?

Alapvetően a cél a következő lenne:
Egy megadott útvonalon rekurzívan az összes képet keresse meg (mondjuk jpg, jpeg, png kiterjesztés, de tőlem mime alapján is kikeresheti az összes képformátumot), és amit talált képet, azon meg kell vizsgálnia, hogy az EXIF Orientation értéke van/létezik, és az nem egyenlő eggyel. Ha ilyet talál, akkor le kell futtatnia azon a fotón a következő parancsot: convert path/to/file -auto-orient /path/to/file

Mind az útvonal, mind a filenevek tartalmaznak speciális karaktereket.

A Discord botom nem válaszol a parancsokra

Sziasztok! Elkezdtem fejlesztgetni egy Discord botot python programozási nyelvben a discord.py használatával. Eddig hibátlanul működött most meg fogta azt nem működöik. Mikor lefutattom a python fájlt a bot csatlakozik a Discord-hoz de a parancsai nem működnek beírhatom bármelyiket nem válaszol egyikre sem, ha beírok egy olyan parancsot ami nem is létezik arra sem ír hibát a konzol pedig kéne neki. Visual studio code-ban írom és az se talál semmilyen hibát a kódban.Valaki tud valami magyarázatot arra és esetleg megoldást is hogy mi lehet a probléma? 

bash argumentumok továbbadása

Sziasztok! Vegyük az alábbi szkriptet, amit meghívok idétlen escapelt spaceokkal, és szeretném a szriptből ezeket megőrizve továbbadni. script.sh :

#!/bin/bash

PULSE_SINK="${some_value}" ${*} &
./script.sh ffplay "Egy\ video\ file.mp4"

Itt az ffplaynek fontos, hogy az "Egy\ video\ file.mp4" egy argumentumként érkezzen.

Ez nemcsak ffplay és ffmpeg-gel lesz használva, és a fileok spacementesítése nem jön szóba. Ötlet?

Regexp magus van itt? :)

parsolnom kene ilyen parametereket:

param1=abc

param2 = abc

param3 = "ab'c"

param4='a"b"c'

param5="abc=def"

egyaltalan megoldhato ez egy regexp-el? (most karakterenkent dolgozom fel...)

lenyeg hogy lehet ' es " is az idezojel (de nem is kotelezo) es azon belul a masik fajta idezojel sima karakterkent mukodik.

es akkor meg a \' nem is neztuk, de az talan nem is kell.

pythont hasznalok, ami elvileg perl regex kompatibilis nagyjabol...

[Megoldva] Időzítő bash script és cron

Kicsit agyaltam és lehet, hogy túlgondoltam az egészet. Majd ti megmondjátok, hogy hülye vagyok. Mindegy. Működik a következő script és crontab kombó a következő beállításokkal?

Hétfőn 20-kor leáll keddtől-csütörtökig 18-kor leáll, pénteken 16-kor leáll és minden hétköznap reggel 7.30-kor bekapcsol.

#!/bin/bash

current_day=$(date +%u)  # A hét napjának számát tároljuk el (1-7, hétfőtől vasárnapig)

case $current_day in
    1)  # Hétfő
        wake_after_minutes=690
        ;;
    [2-4])  # Kedd, Szerda, Csütörtök
        wake_after_minutes=810
        ;;
    5)  # Péntek
        wake_after_minutes=3810
        ;;
    *)  # Egyéb napokon
        wake_after_minutes=0
        ;;
esac

sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
sh -c "echo $(date '+%s' -d "+ $wake_after_minutes minutes") > /sys/class/rtc/rtc0/wakealarm"
shutdown -h now

És a crontab:

0 20 * * 1

0 18 * * 2-4

0 16 * * 5

Működhet a dolog?

[Megoldva] Szerver ütemezett be- és kikapcsolása

A kikapcsolással ugye nincs gondom. Cronrabba a megfelelő bejegyzés és rendben van. De a bekapcsolás már problémásabb. Találtam egy posztot, de nem tudom értelmezni az ott látható bash scriptet. Ebben kérem a segítségeteket:

/root/bin/shutwake.sh

# unset alarm, set new time
sh -c "echo 0 > /sys/class/rtc/rtc0/wakealarm" 
sh -c "echo `date '+%s' -d '+ 600 minutes'` > /sys/class/rtc/rtc0/wakealarm" 
/sbin/poweroff

# Then you need to add a line in cron to shutdown:

0     23      *       *       *       /root/bin/shutwake.sh

Ebből azt értem, hogy este 11-kor lefutassa a shutwake szkriptet. De mi is van benne? Mi is ez a wakealarm? Amit szeretnék: minden reggel mondjuk 6-kor bekapcsol a szerver és 22-kor kikapcsol.

python-gtk2 varazslat

Sziasztok!

Van par regebbi programocska/csomagocska ami idovel kikerult a debian repobol mert nagyon python2-ben irtak meg. Marmint igen, megirtak anno python-ban, tok jol mukodott, koszonik szepen, volt par fuggosege, de megy, ment. A kerdes az hogy van-e valami "sztenderd" modja hogy egy ujabb vagy relative ujabb (pl debian/bullseye) ala visszavarazsoljuk a python-gtk2 (meg ehhez hasonlo, toolkit jellegu) csomagokat? Ezekben a relative ujabb linuxokban a python2 meg ott van, de mar a bindingok kevesse... 

thx, A.

TCP socket, programozás javaslataitok

Sziasztok!

Szeretnék 10 darab ip eszközről "folyamatosan" adatot olvasni egy központi feldolgozó helyen. Ezt milyen lehető legkisebb erőforrást igénylő dologgal oldanátok meg?

 

A 10 végpont adatforgalma nagyon pici. 1 ponton maximum 20 karakter információra van szükség abban a másodpercben. Mivel nincs eseményre beküldés (eszköz nem tudja), ezért a folyamatos hallgatózásra gondoltam.

Alap ötletem egy végtelen php script volt, ami minden másodpercben zárja nyitja a kapcsolatot, majd ha van adat az letárolom egy adatbázisban. Ezt erőforrás zabalásnak érzem, nem tudom mi a jobb az ilyen "stream"melésre.

Köszönöm a tanácsaitokat.

[megoldva] Ansible probléma: map filter használata string tömbön

Sziasztok!

Egy érdekes problémába futottam bele mostanában. Egy kicsit összetettebb adatstruktúrával dolgozom és a lényeg az, hogy ki szeretném nyerni belőle a benne levő fájl path-okból egy csak fájl path-okból álló tömböt, aminek az elemein egyenként (de egy lépésben) végre szeretném hajtani a dirname filtert, vagyis megkapni a path könyvtárra vonatkozó részét. Ezt sajnos nem sikerült abszolválnom eddig. A második map hívás - úgy tűnik - a sztringekből álló tömböt különálló karakterekre bontja, és arra hajtaná végre a dirname filtert, és az nekem nem lesz jó.

Íme egy playbook ami nálam ezt a viselkedést produkálta:

---
- name: "map() test"
  hosts: localhost
  vars:
    test_array:
      first:
        - "./a/b/c.json"
        - "./a/b/d.json"
      second:
        - "./a/x/e.json"
        - "./a/x/f.json"
        - "./a/x/g.json"
      third:
        - "./a/y/h.json"
        - "./a/y/i.json"
      fourth:
        - "./a/z/j.json"
        - "./a/z/k.json"
  tasks:

    - name: debug vars 
      ansible.builtin.debug:
        msg:
          - item: "{{ item  }}"
      loop: "{{ test_array | dict2items | map(attribute='value') | map('dirname') | join }}"

A kérdés: hogyan kellene ezt rendesen csinálni?