Szkriptek: Python, Perl, Bash, ...

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.

Python - minimál grafika

Van egy full szöveges python script, amibe egy funkciót kellene beletolni: a script megjelenít egy png-t, a user rákattint, a script pedig megkapja a kattintás koordinátáit.

Jó volna ezt csak pythonban megoldani, hatalmas, exotikus és os-függő dolgok (QT, GTK, egyéb ágyúval verébre megoldások) nélkül. Van erre valami iszonyatosan primitív megoldás?

webdav hozzáférés szkripttel

Van egy szkriptem, mely feltöltene egy fájlt a saját box felhőmbe. Nem dropbox hanem box.
Még a megboldogult időkben (KDE3 talán 4 is) létre tudtam hozni az asztalon egy ikont, mellyel fel és lecsatolhattam a box hozzáférést, mely be volt állítva az fstabban.
Most is be van állítva, de ma már a Plasma DE-n nem lehet ilyen ikont létrehozni mivel nincs implementálva az fsdevice meg kdeeject sincsen már.

Jelenleg konsole megnyit, felhő felcsatol, szkript elindít, szkript beír a felhőbe, felhő lecsatol.
Az nem segít hogy a dolphin megtudja nyitni, mert az ugye egy protokollon keresztül éri el, a szkript meg hozzá sem tud ahhoz szagolni.
Hogy tudnám megoldani biztonságosan hogy a a szkript csatolja fel/le a felhőt?