Szkriptek: Python, Perl, Bash, ...

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?

[MEGOLDVA] rsync logjának feldolgozása

Sziasztok,

Egy olyan problémába ütköztem, hogy adott egy többszörös rsync script, ami loggolásra kerül, és szeretném összesíteni az átvitt file-oknak a nagyságát. Azt hittem, hogy ez elég egyszerű lesz, mert egyszerűen greppelem azt a sort ami kiírja minden egyes rsync file átvitelének méretét, és összeadom. Ez ugye egyszerű:
 

cat rsync.log | grep "transferred file" | cut -d" " -f 5 | awk '{ SUM += $1} END { print SUM }'

Viszont a probléma, hogy nem konzekvensen van a mértékegység, hiszen ez lehet K, M és G is hozzáírva, így nem tudja összeadni, vagyis ezek bár sed-el ki lehetne törölni, de ugye a helyiértéket is hozzá kellene igazítani mielőtt összeadom.
Tud valaki erre egy "egyszerű" megoldást?

Python WTF! ezt meg igy hogy?

Biztos en vagyok a hulye, de ezt nem ertem, hogy itt mi tortenik a dict-el a func hivasok kozott:

def parse(params,d={}):
    for p in params.split(";"):
        k,v=p.split("=",1)
        d[k]=v
    return d

x=parse("a=1;b=2")
print(x)
y=parse("c=3")
print(y)
z=parse("d=4;e=5")
print(z)

# ./wtf.py

{'a': '1', 'b': '2'}
{'a': '1', 'b': '2', 'c': '3'}
{'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5'}

ugye itt azt varnam, hogy mindig csak az aktualis parse() hivas eredmenye keruljon bele a returned dict-be, de a korabbiak hogy kerulnek oda pl. a z-be az a:1 ?

igen, tudom hogy ha a d={} nem a parameterekbe lenen hanem a def utani sorban akkor mukodik, de az volt a cel, hogy opcionalisan meg lehessen adni egy mar letezo dict-et, hogy abba parsoljon bele.

Python dataset max 20MB

Sziasztok,

Van egy Python szkriptünk, amiben dataset-et használunk, viszont az adat, ami be akarunk vele tölteni, több, mint dataset maximális mérete. Ezeket szétszedtük ezresével és úgy töltjük be. Tudtok valami módot arra, hogy 20MB-nál nagyobb méretű adatot töltsünk be Pythonnal? 

SonarCube warning

Sziasztok,

 

Egyszeru os.system('echo "xxxx--------------------------------"') sorra Warningot dob a SonarCube.

ezt irj:

Make sure that executing this OS command is safe here.
Using shell interpreter when executing OS commands is security-sensitive python:S4721

Hogy lehetne ezt orvosolni?

 

Koszonet elore a segitsegert.

Ardi