Szkriptek: Python, Perl, Bash, ...

vbscript

Sziasztok,

 

VBScriptel kapcsolatban szeretnék segítséget kérni.

Olyan VBScriptet szeretnék csinálni amely megnézi egy adott fájl aktuális méretét és a legutolsó módosításának a dátumát és ezt kiiratnám egy html felületre.

Ha ez megvan akkor kibővíteném úgy, hogy egy adott mappába megnézném, hogy melyik belső mappa a legfrissebb.

 

Mivel kezdő vagyok a témában, eddig működő verziót nem sikerült létrehoznom és a neten sem találtam semmi használható megoldást erre.

Köszönöm a segítséget.

bash: email subject dekódolás?

Kaptam egy egyszerűnek tűnő feladatot. Ck. 200 email -ből (dovecot IMAP) kellene táblázatot csinálni. Az első oszlop a dátum a második a subject (tárgy). Mi sem egyszerűbb gondoltam én, de nem tudok rájönni mi ez a kódolás és hogy tudom dekódolni:

Subject: =?ISO-8859-1?Q?Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)

Tárgy valójában: Székesfehérvár 2. (Krumpli)

Próbáltam iconv -al és munpack -sl, base64 -el de semmi nem tudtam kinyerni a "Székesfehérvár 2. (Krumpli)" szöveget.
Próbáltam csak egy részével "Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)".

Mit nézek be? Mit lehet ehhez használni?

szerver diskspace script probléma.

Sziasztok!

 

A következő problémával kapcsolatban szeretnék segítséget kérni.

Van egy VBS scriptem ami annyit csinál, hogy szervereket pingel és az eredményt kilistázza egy html lapra. Ezt sikerült megoldanom.

Most tovább szeretném fejleszteni, és azt szeretném megoldani, hogy nézze a szerverek lemezméretét is és jelezzen html felületen, ha telik a lemez.

Az előző scriptet továbbírva eddig annyit sikerült elérnem, hogy a pingek után beolvassa a server ipt, de utána megakad.

Valakinek van ötlete, hogy mi lehet a probléma? Köszönöm a segítséget.

PowerShell - java.exe: Error: Invalid or corrupt jarfile

Sziasztok,

Van tippetek rá, hogy mi áll ennek a háttérben?

cmd.exe:

java -jar egy.jar

> működik

PowerShell:

& "java -jar egy.jar"

java.exe : Error: Invalid or corrupt jarfile egy.jar

Meghívja a java-t, az pedig megkapja a JAR fájlt.

(A jar konkrétan a Bamboo 7 Agent (atlassian-bamboo-agent-installer-7.0.4.jar), de ez most nem releváns)

Üdv,
Tassadar

Python fullkezdő kérdés: modul importálás

Windows, python 3.6.7, felraktam a frida modul-t:

pip install frida-tools

Elvileg(!) felment, leellenőrizni mondjuk nem tudom hogy kellene, de látszólag sikeres volt az install.

Utána be akarnám tölteni ezt a modult:

C:\programok\Python\Python36>python.exe
Python 3.6.7 (v3.6.7:6ec5cf24b7, Oct 20 2018, 13:35:33) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import frida
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'frida'
>>>

Na itt áll meg a tudományom, hogy hova merre miért meddig. https://frida.re/docs/quickstart/ se részletezi agyon, mi lehet a gond.

[Megoldva] Debian Linux-on fájl tulajdonságok lekérdezése stat használatával ACL jogosultságok mellett.

Sziasztok!

Rekurzívan szeretnék egy adott mappában lévő fájlokról bizonyos információkat kinyerni, a stat programra gondoltam:

find . -exec stat --printf '%A\t%a\t%s\t%f\t%F\t%h\t%i\t%u\t%g\t%U\t%G\t%W\t%Y\t%Z\t%X\t%w\t%y\t%z\t%x\t%N\n' {} \; > test.csv

A dolog "majdnem jó" :) a "gond" hogy vannak ACL jogokkal rendelkező  fájlok amiknél lehagyja a jogosultságok végén a "+" jelet.

Ha az alábbi parancsot használom:

find . -exec ls -l -d {} \; > test.txt

Akkor az egyik ACL-el rendelkező fájlhoz tartozó sor:

-rw-rw-r--+ 1 www-data www-data 8 jún   16 12:07 ./back1/file3.txt

Ugyanez a stat használatával:

-rw-rw-r--    664    8    81b4    szabályos fájl    1    786444    33    33    www-data    www-data    0    1592302074    1592306178    1592302568    -    2020-06-16 12:07:54.936730699 +0200    2020-06-16 13:16:18.413802694 +0200    2020-06-16 12:16:08.887845035 +0200    './back1/file3.txt'

Mint látható a "-rw-rw-r--" oszlop végéről hiányzik a "+" jel. (A további feldolgozás miatt szükségem van rá, mert nélküle nem kérdezi  le az ACL jogokat egy másik script amit nem szeretnék módosítani..)

A probléma megoldására az alábbi Perl script-et írtam mely működik is csupán nagyon "lassú":
 

#!/usr/bin/perl

#karakterkészlet beállítása
#use Encode;
#use utf8;
#use open ':std', ':encoding(UTF-8)';

$_=`date`;
chomp($_);
print STDERR "\nStarted!\t( $_ )\n\nGet file list, please wait few minute...\n\n";

@filelist=`find .`;

$filelistCount=@filelist;
$i=0;
print STDERR "File list get commplette!\t( files num: $filelistCount )\n\n";

$_=`date`;
chomp($_);

print STDERR "Start processing, please wait...\t( $_ )\n\n";

print "Premissions BITS\tPremissions OCT\tSize of BYTE\tFiletype RAW\tFiletype STRING\tHard link num\tInode ID\t";
print "Owner user ID\tOwner grup ID\tOwner user\tOwner grup\t";
print "Create time UNIX\tModify time UNIX\tChanged time UNIX\tAccess time UNIX\tCreate time\tModify time\tChanged time\tAccess time\t";
print "Filename";

foreach $_ (@filelist)
{
        #
        chomp($_);
        #print "$file\t";
        $file=quotemeta($_);
        $fileStat=`ls -l -d $file | awk '{ printf \$1 }'`;

        print "\n$fileStat";
        $fileStat=`stat --printf \'\\t\%a\\t\%s\\t\%f\\t\%F\\t\%h\\t\%i\\t\%u\\t\%g\\t\%U\\t\%G\\t\%W\\t\%Y\\t\%Z\\t\%X\\t\%w\\t\%y\\t\%z\\t\%x\\t\%N\' $file`;


        print $fileStat;
        $i++;

        $_=`date`;
        chomp($_);

        print STDERR "\rProcessing... ( $filelistCount / $i )\t( $_ )";
}

$_=`date`;
chomp($_);

print STDERR "\n\nCommplette processing\t( $_ )\n\n";

print STDERR "Finish!\n\n";

Jelenleg 917873 fájlon dolgozom, maga a find parancs kb 30 másodperc alatt végez, de a script kb 9 óra alatt futott le.

Amennyiben az "egysoros find -exec stat..." megoldást használom a lefutási idő 40-60 perc ami még éppen elfogadható...

Ha külön külön futtatom le az ls-t és a stat-ot egymás után és utána "fűzöm össze" akkor a nagy idő különbség miatt valós kockázata lesz hogy nem fognak egyezni a stat és az ls által kiírt adatok...

Van megoldás rá hogy a stat is odategye azt a "+", esetleg hogy 10-20 szorosára gyorsuljon a feldolgozás?

(A date használata, különösen a ciklusban kb 25% lassít, csak a "tesztelés" véget tettem bele, sajnos a kihagyásuk sem oldja meg a sebességbeli problémát.)

Bármilyen építő jellegű ötletet szívesen fogadok.

Köszönettel: Novarobot.

na és a date-val? (awk-val mi történt?)

#!/bin/bash

today_dow=$(date +%w)
days=(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
for (( dow=0; dow<7; dow++ )); do 
    if (( dow < today_dow )); then 
        date -d "last ${days[dow]}"
    else 
        date -d "${days[dow]}"
    fi
done

echo "***********"

today_dow=$(date +%u)
days=(Monday Tuesday Wednesday Thursday Friday Saturday Sunday)
for (( dow=0; dow<7; dow++ )); do 
    if (( dow < today_dow )); then 
        date -d "last ${days[dow]}"
    else 
        date -d "${days[dow]}"
    fi
done

2020. máj. 31., vasárnap, 00:00:00 CEST
2020. jún. 1., hétfő, 00:00:00 CEST
2020. jún. 2., kedd, 00:00:00 CEST
2020. jún. 3., szerda, 00:00:00 CEST
2020. jún. 4., csütörtök, 00:00:00 CEST
2020. jún. 5., péntek, 00:00:00 CEST
2020. jún. 6., szombat, 00:00:00 CEST
***********
2020. jún. 1., hétfő, 00:00:00 CEST
2020. jún. 2., kedd, 00:00:00 CEST
2020. jún. 3., szerda, 00:00:00 CEST
2020. jún. 4., csütörtök, 00:00:00 CEST
2020. jún. 5., péntek, 00:00:00 CEST
2020. máj. 30., szombat, 00:00:00 CEST
2020. jún. 7., vasárnap, 00:00:00 CEST

Mit keres itt a május 30? Vagy mi a nem jó?
Elvileg az aktuális hetet kellene kilistáznia. 

awk-val mi történt?

1 hónappal ezelőtt Ubuntu 20.04-en és 18.04-en jelenleg is:

echo "30.1  32.3  0.0   0.0   0.0   16.4" | awk '{for( x=(NF); x>=2; x--) if($x!=0.0) print $x;}'
16.4
32.3

Ez az elvárt működés.

Ugyanaz a parancs Ubuntu 20.04-en jelenleg:

echo "30.1  32.3  0.0   0.0   0.0   16.4" | awk '{for( x=(NF); x>=2; x--) if($x!=0.0) print $x;}'
16.4
0.0
0.0
0.0
32.3

Ez már nem jó, a nullákat nem kéne, hogy kiírja... wtf?

Már nem fut le a scriptem normálisan, ami egy hónapja még működött. Megváltozott az if szintaktikája az awk-ban?

időpontok elemzése bash

Nem tudom hogy kezdjek neki az alábbi feladatnak. 

Írtam egy dtvrip nevű interaktív digitális tévé recorder programot, mely bash szkriptekből áll. Nem tanultam programozást. Ezt mind autodidakta módon, fórumos segítséggel, illetve külföldi oldalak böngészésével, meg rengeteg teszteléssel, tanulással értem el. Ez a program már 98%-osan az elvárásaimnak megfelelően működik. A számítógép automatikusan bekapcsol, felveszi a műsort, majd lekapcsol. Most ott akadtam el, hogy mi van akkor ha az adott cron feladat, nem mindennapos rendszerességű, hanem minden másnapos rendszerességű. A bekapcsolással gondok lesznek, mert most mindennap bekapcsol akkor is, ha nincs szükség rá.

Szép vagy nem szép, a dtvrip un. felvétel_szkripteket gyárt a különböző időpontú felvételekhez. Ezek az időpontok epoch formában egy fájlba kerülnek. rectime.txt
Ez a felvétel_szkript, futása végeztével beletesz +1 napot a rectime.txt-be.

Na a gond az, ha teszem azt csak szerdától szombatig kell a felvétel. A cronban helyes a bejegyzés. A felvétel nem fog elindulni vasárnap, de a gép bekapcsol.
Vagyis a rectime.txt és a cron bejegyzésben lévő időpontokat kellene elemeznem. A nehézség az, hogy  ott ugye lehetnek a napra vonatkozó bejegyzések 2-6 formátumúak is. esetleg 1,3,5. Esetleg ennek kombinációja. 1, 5-7

S akkor ennek ismeretében eltudnám távolítani a rectime.txt-ből azokat az időpontokat, amikor nem kell bekacsolnia a gépnek. Azt tudni kell, hogy a bekapcsolás meghatározása jelenleg úgy zajlik, hogy a gép kikapcsolás előtt megvizsgálja a rectime.txt, és az aktuális időponthoz képest a legközelebbit adja át az rtcwakenak. Tehát mindenképpen a rectime.txt fájlt kell módosítani a cron bejegyzések elemzésével. Ez nyilván regex, meg sed, amiben nem nagyon vagyok otthon.

Készülök a githubra is kitenni, de előtte ezt azért megoldanám. 

[ solved ] Opencv forrásból telepítve nem elérhető

Ezt https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/ majd minden lépését követve sikerül feltelepítenem forrásból az OpenCV 4- et.

Nem a virtualis környezet alá telepítettem, hanem a /home/pi alá. 

pi@raspberrypi:~ $ python3
Python 3.7.3 (default, Dec 20 2019, 18:57:59) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
>>>

mit kell tennem, hogy a frissen telepített opencv elérhető legyen ?

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux