Szkriptek: Python, Perl, Bash, ...

Home Assistant Modul, Python programozas - Viessmann

Sziasztok!

A hazautomatikam Home Assisatnt alapon van es bar majdnem minden kutyure van modulom es megoldasom a kazanvezerles/allapotlekerdezes meg hianyzik. 

A kazant egy Vitocom100 -on keresztul elerheto vezerlovel mobilappon es weben keresztul tudom bokdosni, de a HA integracio kellene. 

Keresnek valaki aki megirna nekem [python] mert sem a megfelelo tapasztalatom, sem idom nincs hogy kiovassam a doksikbol hogyan tudok a webrol egy javascriptel teli oldalrol, authentikacio mogul leszivni parametereket es modositani egy-ket dolgot egy formon programozottan ugy hogy az integralodjon a Home Assitant-ba.

Magyarul keresnek egy python programozasban es webes tartalom kezelsben jartas emberket aki hajlando egy Home Assistant modult irni. Ezert szivesen fizetnek es az eredmeny nyilvanossa tervezem tenni a tobbi HA felhasznalo szamara is - termeszetesen a munkat elvegzo szemelynek tulajdonitva a jogot es dicsoseget. Nekem csak a modul kell :) Hozzaferest es alapsegitseget specifikaciot szivesen adok. 

Koszi elore is! 

sudo és a redirect

hello

ha azt futtatom:

sudo echo '#comment' >> /etc/hosts

akkor szépen permission denied kapok. A megoldásom az lett, hogy:

echo '#comment' | sudo tee -a /etc/hosts

 

Arra nem jöttem rá, hogy hogyan lehet kihagyni a tee parancsot. Értem én ha redirect a felhasználó jogosultságával fut, de nincs rá mód hogy az is örökölje a sudo privilégiumokat?

Rendszer tükrözése RAID-ben

Sziasztok!

Fokoznám az élvezeteket otthoni adatbiztonság terén.
Valakinek esetleg van tapasztalata, információja azzal kapcsolatban, hogy hogyan lehetne megoldani a rendszer tükrözését raid-ben?

A kérdés onnan ered, hogy ha van egy NAS, ott lehetőségem van az adatok tükrözésére.

Na de mivan, ha a rendszerlemez hibásodik meg? Jó lenne ha mondjuk egy újraindítás során elindulna a rendszer a másik lemezről, aztán bedobok egy újat és leklónozza magát újra.

Arról meg már nem is beszélek, hogy mi van akkor, ha az alaplap hal el. Arra is van ötletem, de egyszerre csak egy dologgal foglalkoznék.

RegEx probléma

Sziasztok,

Van egy text file-om, benne soronként stringek.
Szeretném azokat a sorokat törölni, melyek tartalmaznak számot (1 vagy többet) és a hosszuk 5 karakter.

Ez a parancs valamiért nem jó. Tudtok ebben segíteni?:

perl -ne 'print if /^(?=.*\d).{5}$/d' mytextfile.txt >mytextfile_removed_lines_contains_digits.txt

Az ilyen tartalmú sorokat szeretném törölni:

$$$x4
$$008
$$123
$$20a
$$221
$$3tV
$$4$$
$$777
....

Köszönöm.

Bash script help

Sziasztok!

A következő a tervem: van pár nyomtatónk, amiknek a számlálóit le kellene kérdezni snmp-vel, majd bizonyos időközönként elküldeni e-mailben. (Lenne hozzá gyári program, de semmit nem ér.)
Van egy Observium, ami jól teszi a dolgát, csak jelentést nem tud küldeni.
Addig eljutottam, hogy *mindent is* tudok küldeni a sendmail segítségével.
Kellene egy viszonylag rendezett kimenettel rendelkező script, aminek az eredményét át tudom irányítani a sendmail felé.
A lényege annyi, hogy van egy adatok nevű fájl, amiből soronként kiolvassa az ip címeket és szépen lekérdezi. Jó lenne, ha ezt meg lehetne toldani mondjuk soronként egy TAB után az eszközök nevével is (Pistike, Jancsika, stb..) de erre még nem jöttem rá hogyan lehetne, így egyelőre csak annyi van, hogy kiírja az ip címet és mellé a számláló állását.
Szóval eddig ez van:


#!/bin/bash
UDVOZLO="Nyomtato szamlalok lekerdezese..."
HIBA="-----=====##### HIBA! #####=====-----"
HADAT="Az adatok fájl nem található"

echo $UDVOZLO

if test -f "adatok"; then
for i in `seq $(cat adatok | wc -)`; do
sor=`head -n$i adatok | tail -1`
echo $sor | tr -d '\r \n'
eredmeny=`snmpget -v2c cname $sor -Ov iso.3.6.1.2.1.43.10.2.1.4.1.1`
szamlalo=`echo $eredmeny | awk '{print " :" $2}'`
eredmenyf=`echo $eredmeny | awk '{print $1}'`
if [ eredmenyf = "Timeout:" ]; then
echo "Kikapcsolva"
else
echo $szamlalo
fi
done
else
echo $HIBA
echo $HADAT
fi

Vázlatosan annyit csinál, hogy soronként kiolvassa az "adatok" fájl tartalmát (IP címek), amiket elkezd lekérdezni.
Az érdekes rész az eredmenyf nevű változónál van. Ha válaszol az eszköz, akkor ilyen eredményt ad az snmp:
Counter32: 72176

Ha nem válaszol, mert hibás a cím vagy ki van kapcsolva, stb... akkor:
Timeout: No response from 1.2.3.4.

Szerettem volna kivágni awk-val az első szót, amit a következő if-el megvizsgálok. Ha ez "Timeout:", akkor kiírja, hogy kikapcsolva.
Amíg van válasz, addig ez jól is működik, viszont ha jön a Timeoutos eredmény, akkor az awk valami miatt nem kezeli (próbáltam konzolon is csak egy sort), hanem visszaadja az egész sort.
Hogyan lehetne ezt kezelni?

Perl/Tk - MainLoop es szubrutin - hogyan??

Sziasztok,

hogy mukodik a szubrutin perl/Tk alatt?

Miert fut le a szubrutinban a:

print "$i\n";

resz $i osszes ertekere es csak azutan a grafikai megjelenites:

$st=$mw->Label(-justify => 'left' ,-foreground => "#196f3d" ,-anchor => 's' ,-text => $i)->place(-x=>$dx, -y=>$dy);

Azt szeretnem elerni, hogy kinyomtassa $i erteket es rogton utana
jelenitse meg GUI-ban adott $i erteket.

Ardi


#!/usr/bin/perl
use Tk;

$dx=60;
$dy=0;
my ( $size, $step ) = ( 450, 1);

my $mw = MainWindow->new;
$mw->configure( -width=>$size, -height=>$size );
$mw->geometry('450x350+40+50'); 
$button = $mw->Button(-text => "Exit", -background => yellow, -foreground => red,  -command => sub { exit })->pack(-side => 'left', -anchor => 'n'); 
$button4 = $mw->Button(-text => "Runx",-background => yellow,-foreground => blue, -command => \&say)->pack(-side => 'left', -anchor => 'n');


sub say{
         for (my $i=0; $i <= 3; $i++) 
         {
           print "$i\n";
           $st=$mw->Label(-justify => 'left' ,-foreground => "#196f3d" ,-anchor => 's' ,-text => $i)->place(-x=>$dx, -y=>$dy);
           sleep(2);
           $dy=$dy+20;
    }
}
     
MainLoop;

Hiányos mawk

Adatokat szeretnék feldolgozni néhány millió soros textfile-okon. Az awk már majdnem jó, csak lassú. Meg nem tud bináris kimenetet - a printf("%c", x) nem az -, de ezt megoldottam azzal, hogy base64 kimenetet generálok, s egy base64 -id parancsba pipe-olom az outputot.

Gondoltam, legyen akkor mawk, mert az gyors. Ott nincs BEGINFILE, ENDFILE, de ezeket meg lehet ügyesen oldani. Hiányzik a switch case szerkezet, megoldottam ezt is if-fel. Amin viszont elbuktam, azok a bitműveletek. Nagyon hiányzik az lshift(), rshift(), and(), or(), xor(). Pedig ezek megléte nem lassítaná a mawk-t, hiszen csak függvények lennének. Akinek nem kell, nem hívja meg.

Természetesen meg tudtam írni ezeket a függvényeket, de lassú lesz, s pont az lenne a mawk értelme a gawk-val szemben, hogy gyors. Memória beáldozásával lehet gyorsítani, egész egyszerűen tömbbe letároltam két 8 bites operandusra az and() és or() függvények értékeit. De ez sem az igazi asszociatív, string indexelésű tömbök esetében.

Tudom, hogy ez az „akinek kalapácsa van, mindent szögnek néz” tankönyvi esete, de sok soros ASCII file feldolgozásáról nekem az awk jutott eszembe, ami egy eléggé gyors nyelv egyúttal. Hát az, csak ha sokat kell számolni, és több millió sort kell megenni, akkor azért már nem olyan gyors.

Az az érzésem, írhatom át az egészet C-re. :( Ott persze vacakolhatok a hibák elvarrásával, file megnyitással, lezárással, azzal, hogy erősen típusos a nyelv, deklarációkkal. Gyorsan szerettem volna eredményt.

szovegfajlbol mezok keresese

Van egy 1,5m bejegyzeses logfileom. Kicsit nagy a merete, majdnem 1G, szoval szeretnem csak az erdemi infot megtartani belole. Field separator a space, szoval awk/cut jol vagja.
Apro bibi, hogy nem egyforma a mezok szama....

cat nincs_ldaps.txt | awk '{print NF}' | sort |uniq -c
28722 32
8210 33
3436 34
21838 35
125861 36
190381 37
39358 38
276739 39
126 43

Szoval igy nehezen tudom kivagni pl. a 6,13 es 25 mezot (sajnos nem ugy van, hoyg a 32. mezoig ugyanaz es utana plusz infok...)

Valami otlet ra, hoyg mezoszam helyett hogyan lehetne mezonevre keresni ( ahogy nezem, a mezok "kulcs=ertek" alakban vannak, tehat kulcs alapjan lehetne.... )
Barmilyen megoldas erdekel, bash-t meg is ertem, mast nem biztos, de most jo lenne, ha mukodne....
Koszi.

python ( np ) tömb xy elemei

Sziasztok !

Van egy kicsi python script, amiben a kamera képét ( vagy annak elemeit ) egy tömbben tárolja. Ennek a változásait elemzi és megállapítja, hogy volt e mozgás. Engem az elmozdulsás iránya, mértéke érdekelne.

Hogyan lehet kinyerni a tömbből az x,y értékeit?

A script : https://pastebin.com/DNSF7rpT

A kimenet ( részlet ) :
Motion detected!
a = [[62 58 0 ... 0 0 0]
[62 42 30 ... 36 0 0]
[52 30 30 ... 0 0 0]
...
[12 14 20 ... 20 20 0]
[ 0 12 24 ... 16 16 0]
[ 0 0 30 ... 0 0 0]]
x = ?
y = ?

[Megoldva !] Bash könyvtárak létrehozás

Sziasztok !

Szeretnék egy kis segítséget kérni. Bash script-be szeretnék létrehozni mappákat.

export SL=/scorpio-linux
mkdir -pv ${SL}

mkdir -pv ${SL}/{bin,boot{,grub},dev,{etc/,}opt,home,lib/{firmware,modules},lib64,mnt}
mkdir -pv ${SL}/{proc,media/{floppy,cdrom},sbin,srv,sys}
mkdir -pv ${SL}/var/{lock,log,mail,run,spool}
mkdir -pv ${SL}/var/{opt,cache,lib/{misc,locate},local}
install -dv -m 0750 ${SL}/root
install -dv -m 1777 ${SL}{/var,}/tmp
install -dv ${SL}/etc/init.d
mkdir -pv ${SL}/usr/{,local/}{bin,include,lib{,64},sbin,src}
mkdir -pv ${SL}/usr/{,local/}share/{doc,info,locale,man}
mkdir -pv ${SL}/usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv ${SL}/usr/{,local/}share/man/man{1,2,3,4,5,6,7,8}

A problémám az, hogy össze vissza hozzá létre a mappákat. A "{}" jeleket is hozzáadja a mappákhoz és van amit egymásik mappához ad hozzá amit létre se kéne hoznia. puskázásként használtam a lfs könyvet és a cross könyvet is. Ha így futtatom le ahogy most van akkor ezt kapom.

Eredetileg ennek a mappának egyszer kéne létrejönnie.
root@HackerOS:/# ls | grep scorpio-linux
scorpio-linux
scorpio-linux{
root@HackerOS:/#

A benne lévő mappák így jönnek létre.

root@HackerOS:/scorpio-linux# ls
{bin,boot{,grub},dev,{etc cross-tools etc {proc,media root usr var
root@HackerOS:/scorpio-linux#

Tudna valaki segíteni?
Válaszokat előre is köszönöm.