7zip command-line mappa kihagyása linux alatt

A 7zip tömörítő lett korunk WinRar-ja. Népszerűsége még mindig növekszik és elérhető több operációs rendszeren is. A nagy méretű és sok fájlt tartalmazó mappákkal is kevesebb buktatóval dolgozik, mint az oly’ népszerű tar+gz. Viszont a dokumentáció nem mindig egyértelmű, reáadásul linux alatt eléggé sok néven érhető el a különböző disztribuciókban ( 7z, 7za, 7zr, …).

A leggyakrabban használt formája ez:

7z a -mx1 arcive.7z /home/legyes/path/to

Viszont ha szükségünk van arra, hogy bizonyos mappákat hagyjuk ki, akkor a dokumentációban elfelejtik egy fontos dologra felhívni a figyelmünket: Linux alatt a ! jel speciális karakter, ezért escapelni kell \! formában, azaz így kell megadni:

7z a -mx1 archive.7z /home/legyes/path/to -xr\!excluded_directory

A kizárt mappa relatív a tömörítendő mappához képest, ami ugyancsak ritkán van megemlítve.

2017.04.22. 17:24 - legyes

JSON képes MySQL 5.7 telepítése Debian linuxra

A NoSQL hullám nagyon hódít, amivel én nem feltétlenül értek egyet, mert azt vallom, hogy mindent arra kell használni, amire való (azaz adatok tárolására, szűrésére, stb. SQL-t). Az egyik fő indok mellette azt szokott lenni, hogy JSON objektumokat lehet benne tárolni és azokkal lehet dolgozni. Így  kliens oldal eleve készen kapja, nem kell a backenden összerakni és szétszedni újra és újra. Olvass tovább…

2017.02.06. 15:03 - legyes

Fájl feltöltés Windows alól cURL segítségével

A cURL nagyon széles körben használt program, sokan feszegetik a határait (pl. PHP futtatás párhuzamosításban) és használják webes botok alapjául is. Nagyon sok argumentummal rendelkezik, a –help több oldalas listával örvendeztet meg.
Hogy megtaláljam később is, leírom ide, hogyan lehet fájl feltölteni POST-tal, valamint egyéb paramétereket átadni. A program letölthető kb. minden létező operációs rendszerre a https://curl.haxx.se/download.html címről.

curl -X POST -F "xml=@C:\\Data.xml" -F "api_key=d040207a" http://peldadomain.hu/api/szolgaltatas.php

Az előbbi példa PHP oldalon úgy jelenik meg, hogy lesz egy $_FILES['xml'] és egy $_POST[‘api_key’]. Ennek segítségével akár Windows alatt is automatizálhatunk könnyedén adatfrissítéseket. (A fájlok elérési útjában Windows alatt mindig dupla \ jel van, ahogy egyéb Windows-os elérési út megadásnál már megszokhattuk.)

2016.08.30. 13:17 - legyes

Településlista betöltése MySQL adatbázisba

Az egyik projektemben szükség van a magyar települések listájára, lehetőleg koordinátákkal a későbbi távolság számítás és térképen ábrázolások miatt. Nagyon sok szolgáltató kínál ilyen adatbázisokat vagy webes API-kat horror árakon. Találtam egyet, ahonnan letölthető ez a lista txt-ben: http://download.geonames.org/export/zip/ . A fájl UTF-8 formátumú, tabbal elválasztott szöveges fájl, ahol a sorvége jel a \n.

telepuleslista


Olvass tovább…

2016.08.22. 14:13 - legyes

WordPress érdekesség, avagy miért nem jó ötlet fröccsöntött rendszereket használni

A minap a segítségem kérték, mert egy szerver spammelt, letiltották és azonosítani kellett a baj forrását. Kiderült, hogy feltörtek rajta egy WordPress blogot, és ezzel elég nagy bajt okoztak, ugyanis a WordPress PHP-ja hozzáfért egyéb könyvtárakhoz is, amiben más PHP oldalak futottak.

  1. Első alkalommal valószínűleg egy kép plugin hibát kihasználva base64-ben kódolva feljutott pár PHP fájl. Általában a szokásos dolgokra voltak kihegyezve:
    • teljes adatbázis leképezés, amihez a WordPress felhasználója hozzáfér
    • teljes könyvtárstruktúra leképezés, amihez a WordPress-t futtató PHP hozzáfér
  2. Következő lépésben elrejtett véletlenszerű könyvtárakban PHP fájlokat, amik több funkciót láttak el:
    • önmagukat terjesztették, mint file proxy
    • spam leveleket küldtek
    • webproxy-t hoztak létre
    • egyéb vicces dolgokat “telepítettek” egykattintásos szolgáltatókon hostolt címekről
  3. A legviccesebb lépése pedig az volt, hogy létező (lehetőleg index.php) PHP fájlok első sorába is elhelyezte magát a 11900. oszloptól! A fájlokba belenézve semmi érdekes nincs. De a grep mégis kidobja, hogy ott van benne az eval, sőt magát a kódot is. Nano-ban vagy mceditben az eval-hoz is ugrik, de belenézve nem látni.wordpress_hack2
    find . -name "*.php" -exec grep -H "eval" {} \; | more

    wordpress_hack

 

Update #1:

Közben találtam még egy finomságot:

wordpress_hack3

 

Mi a tanulság? Ha már fröccsöntött motorokat (WordPress, Joomla, Drupal, …) használunk, frissítsünk, amilyen gyakran csak lehet. Igen, ez is WordPress 🙂

Közel 4 óra volt kibelezni a különféle vicces dolgokat művelő PHP-kat a mappákból és még biztosan találni ezt-azt 🙁

Ui.: Most komolyan, mit nem lehet azon érteni, hogy NE HASZNÁLJ eval()-t, soha, semmiben. De főleg abban nem, ami felhasználó által bevihető inputból származik.

Update #2:

Egy kis Joomla hack. Az 1. sor: assets(), a 2. base64_decode() és már ott is az eval :(
Egy kis Joomla hack. Az 1. sor: assets(), a 2. base64_decode() és már ott is az eval 🙁

Kis olvasnivaló: https://www.exploit-db.com/exploits/17602/ és https://forums.digitalpoint.com/threads/wp-hack.2734636/ és https://jordankueh.com/2014/wordpress-remote-code-execution-base64_decode/ és https://jordankueh.com/2014/wordpress-remote-code-execution-base64_decode/ és http://msurowiecki.pl/index.php/inne/106-wordpress-under-attack-april-2013-tips-to-remove-spyware

2016.03.26. 17:38 - legyes

Synology DSM: cron job futtatása docker konténerben

Azt hiszem DSM 5.1 óta lehet futtatni docker konténereket, ami egy új világot nyitott meg a Synology NAS-ok előtt (a QNAP-ban már jó ideje van docker és qemu is). Viszont szembesültem azzal, hogy azért nem kapunk mindig teljes értékű virtualizált rendszert. Az első ilyen fájó pont az volt, hogy a cron-t hackelni kell, hogy működjön.

Nos talán a legegyszerűbb módszer az, hogy a docker gépben csinálunk egy scriptet, amiben benne vannak a futtatandó parancsok. Majd a Synology DNS-ben ütemezve meghívjuk azt a docker segítségével.

Ahhoz, hogy a docker gép konzolját kaphassuk meg, a következő parancsot használjuk: docker exec -i -t gepneve /bin/bash

Ez szépen le is fut parancssorból, de a cronból persze nem történik semmi. Igen, mert ott nincs szükség az interaktív (-i) módra és a pszeudo-TTY -ra sem (-t), viszont a -d kapcsoló lesz a mi barátunk (háttérfolyamat):

/usr/local/bin/docker exec -d gepnev/root/scriptnev

Ütemezett feladathoz nem érdemes belehackelni a DSM cronjába, hanem inkább a Vezérlőpult, Feladatütemezőben kell azt hozzáadni.

synology_cronjob1
synology_cronjob2

2016.02.26. 12:44 - legyes

MyAudio Series 9 (Tesco-tablet) custom ROM (AOKP / CyanogenMod9 és 10)

Ez a post már nagyon-nagyon régi. A fájlokat el kellett távolítani, egyéb okok miatt. Javaslom a FreakTab és a VonDroid fórumokat.

A legkisebb is számít hipermarketben kilóra osztották a MyAudio Series 9 tabletet. A használt aukciós oldalakon már fel is  bukkantak másfélszeres áron. A kütyüben egy Allwinner A10 1GHz processzor van, 1.2GHz-re tuningolva “gyárilag”. Egy YouTube videón felbuzdulva úgy döntöttünk, hogy nekilátunk feltenni egy custom ROM-ot, hátha használható lesz böngészésre is. Ugyanis ez a proci még tuningolva is teljesen alkalmatlan webezésre. Először sikerült is letéglásítani a cuccot, plusz a mentés is odalett :blink: .  Több Eken IMG próbálgatás után meglett a megfelelő kernel modullal rendelkező compatibility.zip és az eredeti IMG-t tartalmazó fájl is.

Tapasztalatom szerint az AOKP egy picit jobbnak tűnik, mint a Cyanogen 9-es. A Cyanogen 10-ben nem megy az USB mass storage, csak terminalos scripttel. A ROM-ok szerintem az épp használható sebességet ütik meg, a webböngészés élvezhetőbb a custom ROM-okkal a gyárihoz képest. Az egyedüli bug, a WiFi elalvása, ugyanis nem ébred fel újra, de a gyorsmenüből egy gyors ki/be kapcsolás megoldja.

Tuningolni nem nagyon érdemes, a fórumok szerint 1.15GHz-n stabilan megy (ez nem ment system.ui.app állandóan meghalt), 1.2+ GHz-n pedig szinte azonnal fagy. Kb. 1.1GHz-n volt stabil. Governorok közül alap a smartassv2, piszok gyorsan állítgatja az órajelet 60MHz és 1GHz között, de ha alszik a tablet, akkor a screen lock picit lassan jön elő. Az órajel emelésével drasztikusan emelkedik az elfűtött energia mennyisége is, szal’ _szerintem_ nem érdemes 1050MHz felé menni.

Böngészésre a Dolphin HD és a “gyári” böngésző volt használható, minden más elviselhetetlenül lassú volt. A játékok és a videók (MX Player HW decoding!) teljesen jól mentek rajta, a Trebuhet launchert érdemes ADW EX-re vagy APEX-re cserélni.

A készülékben bekövetkezett károkért sem én, sem a készítők semmilyen felelősséget nem vállalnak. Ha téglásítottad mégis a kütyüt, olcsón megveszem 🙂

Az alábbi leírás vázlatos lesz, aki még sohasem csinált ilyet a telefonján, annak amúgy sem ajánlom.

  • Engedélyezzük az USB hibakeresést a rendszerbeállításokban a táblagépen
  • Csatlakoztassuk a számítógépre USB-n keresztül (ha drivert kér, benne van a csomagokban alább)
  • Indítsuk el a számítógépen a Sausage scriptet
  • Írjuk be a scriptben a 13-as számot, majd ENTER után kövessük a megjelenő utasításokat (ha minden jól megy, akkor fájlokat másol a telefonra), ha végzett írjunk be egy “Q”-t és nyomjunk ENTER-t
  • Másoljuk fel a BELSŐ memória gyökerébe (a számítógépen az első meghajtó a tabletről) a compatibility, a Cyanogenmod9/AOKP, és a Google apps zipet (A Cyanogen oldaláról letölthető ha nincs meg)
  • Tartsuk nyomva hosszan a bekapcsoló gombot, amíg a tablet teljesen ki nem kapcsol (Nem jó, ha menüből kapcsoljuk ki!)
  • Tartsuk lenyomva a Hangerő – gombot, közben tartsuk legalább 10 másodpercig benyomva a bekapcsoló gombot, majd engedjük fel a bekapcsoló gombot, és amint a képernyőn megjelenik valami, egy pillanatra engedjük fel a Hangerő – gombot, majd tartsuk újra lenyomva, amíg a recovery be nem jön
  • A recoveryben a Hangerő + és -, valamint a Vissza és a Bekapcsoló gombbal navigálhatunk. A Bekapcs. gombbal okézhatjuk a választott sort. Az SD kártyát ez a recovery nem látja, de a belső memóriát igen (a recoveryben az zip telepítés menüjének legalján van)
  • Teljes data wipe / factory reset után sorban válasszuk ki a zip-eket (1. ROM, 2. Compatibility, 3. Google Apps), és telepítsük. A telepítés után a recovery főmenüjében válasszuk a “Fix permissions”-t, ugyanis a G-szenzor csak ezután fog működni

Ha (n)agy baj történt, akkor sem kell megijedni, van gyári firmware és hozzá a visszaállító program. Az Allwinner A10-es kütyüknél úgy lehet gyári firmware image letöltő módba lépni, hogy hosszú kikapcsolást nyomunk neki (legalább 5-6 másodperc), majd nyomva tartunk egy gombot – ami nem a bekapcs gomb -, közben nyomunk egy 2 másodperces bekapcs gombot, majd nyomkodni kezdjük a bekapcs gombot (persze közben tartjuk a másik tetszőleges gombot is lenyomva).

Ha nem menne az érintőképernyő és/vagy a g-szenzor, akkor a recovery-ben (fentebb leírva) nyomjunk egy “Fix permissions”-t.

… ami pedig kellhet hozzá:

UPDATE #1: Ami megmaradt nekem a fájlokból itt elérhető: http://vps.computech.hu/d/myaudio/

 

Gyári visszaállító image: http://www.legyes.hu/download/myaudio/2K_9_7inch_software.img és hozzá a driver+program: http://www.legyes.hu/download/myaudio/tool_livesuit.zip és a ClockWork Recovery telepítés és driver http://www.legyes.hu/download/myaudio/SausageScript.zip

Compatibility zip: http://www.legyes.hu/downlaod/myaudio/myaudio-compatibility0.0.2j.zip

Android ICS 4.04 AOKP: http://www.androidfilehost.com/main/Allwinner_A10_Developers/christiantroy/aokp/ és CyanogenMod 9 http://www.androidfilehost.com/main/Allwinner_A10_Developers/christiantroy/roms/

Android 4.1.1 CyanogenMod 10 : http://forum.xda-developers.com/showthread.php?t=1821398

Forrás: http://translate.google.hu/translate?sl=pl&tl=en&js=n&prev=_t&hl=hu&ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fforum.android.com.pl%2Ff597%2Ftablet-myaudio-i-cyanogenmod9-197792%2Findex5.html

2012.09.05. 13:37 - legyes

iSCSI target file készítés Linux alatt

Az “iscsitarget” csomag webmin moduljánál szükség lehet erre, ugyanis a webminből nem lehet a fájlt létrehozni, csak létezőt felcsatolni. Lustaság fél egészség alapon…

dd if=/dev/zero of=/storage/iscsi/HU0190-000329.img count=0 obs=1 seek=80G
2011.10.19. 11:15 - legyes

Redmine első betöltésének gyorsítása

/etc/apache2/sites-enabled/@redmine

# Speeds up spawn time tremendously -- if your app is compatible.
# RMagick seems to be incompatible with smart spawning
RailsSpawnMethod smart

# Keep the application instances alive longer. Default is 300 (seconds)
PassengerPoolIdleTime 1000

# Keep the spawners alive, which speeds up spawning a new Application
# listener after a period of inactivity at the expense of memory.
RailsAppSpawnerIdleTime 0

# Additionally keep a copy of the Rails framework in memory. If you're
# using multiple apps on the same version of Rails, this will speed up
# the creation of new RailsAppSpawners. This isn't necessary if you're
# only running one or 2 applications, or if your applications use
# different versions of Rails.
RailsFrameworkSpawnerIdleTime 0

# Just in case you're leaking memory, restart a listener
# after processing 5000 requests
PassengerMaxRequests 5000

# only check for restart.txt et al up to once every 5 seconds,
# instead of once per processed request
PassengerStatThrottleRate 5

Forrás: http://stackoverflow.com/questions/853532/slow-initial-server-startup-when-using-phusion-passenger-and-rails

2011.09.23. 10:25 - legyes

Linux és a csodálatos find parancs: szeretem

A napokban felmerült egy olyan igény, hogy a külön mappákban – dátum szerint – archivált adatokat ki kellene tömöríteni, az összeset egy adott helyre, a mappákon kívül, majd egy másik projekt keretében – az előzőhöz hasonlóan – mindent a saját mappájába kellene kitömöríteni.
Mivel nem vágom a find paraméterezését fejből (öregszem) ezért a Google barátunk hoz fordultam. Elsőre kezdtem megijedni, mert egyre hosszabb és hosszabb shell scriptek kerültek elő a valójában nem is ilyen bonyolult feladat megoldására. Majd jött a megváltás:

find ./archives2010* -type f -name '*.rar' -exec unrar x -o- {} ;

– ezzel a paranccsal abba a mappába tömörít ki minden archives2010* mappában található rar állományt, ahonnan épp a scriptet futtatjuk. Az exec paramétert execdir -re cserélve pedig oda tömöríti ki, ahol a rar fájl is található.

Köszönöm Google!

2010.11.09. 13:11 - legyes

MySQL syslog tűzfal trigger


delimiter //
create trigger tr_syslog
before insert on logs
for each row
begin
IF (NEW.host = '10.1.12.218') THEN
INSERT INTO cisco_wlc (host,facility,priority,level,tag,datetime,program,msg,seq) VALUES (NEW.host,NEW.facility,NEW.priority,NEW.level,NEW.tag,NEW.datetime,NEW.program,NEW.msg,NEW.seq);
DELETE FROM logs WHERE seq=NEW.seq LIMIT 1;
END if; Olvass tovább...
2010.10.13. 08:49 - legyes
1 2