Command Line

Linux parancssor. Ismert és kevésbé ismert parancsok. Bash tippek, trükkök. Rövid scriptek.

Címkék

&& (1) A4 (1) ac3 (1) acpi (2) AES (1) agrep (1) ajánló (1) alias (2) alkönyvtár (4) android (1) animgif (1) apropos (1) audio (2) avi (6) awk (1) backup (4) badblocks (1) basename (3) bash (17) bash completion (1) battery (1) bc (1) blkid (1) boot (3) brute force (1) bug (1) bzip2 (2) cab (1) cal (1) calibre (4) calibredb (1) capability (1) cat (2) cd (4) cdialog (2) checkinstall (2) ciklus (1) címke (2) cksum (1) clipboard (1) cmdtools (1) colordiff (1) column (1) commandlinefu (1) convert (8) cp (1) cr (1) crop (1) csplit (1) curl (1) date (1) dátum (1) dd (8) ddrescue (1) deb (1) decimális (1) default value (1) defrag (1) df (1) dia (1) dialog (2) diff (6) digitális fénykép (14) dircolors (1) dirty cow (1) dlna (1) dmidecode (1) dng (2) dos (2) dos2unix (1) dropbear (1) dropbox (1) dt3 (1) du (3) dump (2) dv (1) dvd (10) dvdauthor (2) dvd rw tools (1) e2freefrag (1) e2fsprogs (4) ebook (2) editor (2) eh (1) eject (1) emacs (4) encfs (2) energiagazdálkodás (1) enfuse (2) Enigma (1) epub (2) ESC (1) espeak (1) exe (1) exif (6) exiftool (11) exit (1) ext2 (1) ext3 (1) ext4 (1) f3 (1) fájl (1) fallocate (1) fdisk (3) fdupes (1) feh (2) felhő (1) felirat (1) ffmpeg (11) filefrag (1) find (6) for (3) format (1) fortune (1) fred weinhaus (1) fuse (4) fuse-lgefs (1) fzf (1) gdatafs (1) genisoimage (3) getcap (1) getfacl (1) getmail (1) ghostscript (1) gif (1) glances (1) gnumeric (1) gnuplot (1) gömb (1) google (1) google drive (1) GPAC (1) gparted (2) gpg (3) gpg-zip (1) gplaycli (1) gps (2) gpsbabel (1) graphviz (1) grep (2) grive (1) grive2 (1) groff (1) growisofs (1) gs (1) gtk (1) gunzip (1) gzip (2) h264 (2) hálózat (1) handbrake (1) hangosítás (1) hardver (1) hash (1) haszontalan (1) hdd (5) head (1) helyettesítés (1) hexadecimális (2) hp (1) hp-levels (1) http (1) hugin (1) icewm (1) icewm-light (1) identify (1) if (1) ifconfig (2) ifs (1) igo (1) imagemagick (12) imap (1) index (1) install (1) iotop (1) iperf (1) iso (3) java (2) jelszó (5) jhead (1) jnettop (2) jogosultság (1) jpeg (4) jpg (2) jre (1) kapcsos zárójel (1) karakterkódolás (1) kdenlive (1) képméretezés (1) képnézegető (1) kernel (1) kétmenetes (1) keystore (1) keytool (1) kiegészítés (1) kindle (1) kódolás (1) könyv (1) kriptográfia (1) k x (2) lbzip2 (1) less (5) Levenshtein (1) lf (1) lg (1) linux (2) linuxvilág (1) lm sensors (1) log (1) losetup (1) ls (3) lsof (1) LS COLORS (1) lzw (1) mac address (2) mad (1) mail (1) man (2) markdown (1) matroska (4) md5sum (1) mediainfo (1) melt (1) mencoder (5) merevlemez (5) meta (1) mikmod (1) minidlna (1) mjpegtools (1) mkv (6) mkvmerge (3) mkvtoolnix (4) mlt (1) mms (1) mogrify (1) monitor (1) montage (1) mount (3) mp3 (2) mp4 (1) MP4Box (1) mpg123 (1) mpg321 (1) mplayer (6) mplex (1) named (1) naptár (1) ncurses (2) nethogs (1) ng (1) nice (1) niceload (1) nl (1) nosztalgia (1) ntfsresize (1) nyomtató (1) od (2) ogg (1) oktális (1) openssh (1) openwrt (1) óra (1) panoráma (1) parallel (3) parancsbehelyettesítés (1) parted (1) pass (1) patch (2) pbzip2 (3) pdf (8) pdfcrack (1) pdfjam (1) pdfnup (1) pdftk (2) pendrive (1) pentax (6) pgp (1) pgrep (1) PhotoRec (1) pi (1) picasa (1) picasaweb (1) pid (1) pigz (1) pipe (6) pktriggercord (1) play store (1) pop3 (1) popd (2) port (1) process (4) pushd (2) pv (3) pwgen (1) python (1) qimport (1) qr (2) qrencode (2) random (1) randr (1) recode (1) regiókód (1) reguláris kifejezés (2) rejtjelezés (2) renice (1) rfkill (1) rip (1) rm (1) rpm (5) rsa (1) rsync (2) sane (1) scanimage (1) screenshot (1) sebesség (1) sed (2) seq (4) setcap (1) setfacl (1) sha256sum (1) sha512sum (1) shellshock (1) shred (2) SIGINT (1) smp (3) sorszámozás (1) sort (2) sourse-highlight (1) space (1) sparse (1) split (2) ssconvert (2) ssd (1) ssh (2) sshfs (1) startx (1) stat (1) stopper (1) sync (1) sysrq (1) systemd-analyze (1) systems (1) számológép (1) szenzor (1) szerver (1) szimbolikus link (1) szimbolikus lunk (1) szkennelés (1) tail (2) tar (3) tee (3) text (2) tiff (1) time (1) timeout (1) tinta (1) titkosítás (3) tömörítés (4) top (2) töredezettségmentesítés (1) touch (2) tput (1) tr (1) transcode (5) trap (1) TRE (1) tree (2) tutorial (1) ufraw (2) ufraw batch (1) újság (1) uniq (1) unix (2) upower (1) urandom (1) user (1) utf 8 (1) változó (1) VBoxManage (1) véletlenszám (2) verem (1) vertical video syndrome (1) VHS (1) vi (4) vid.stab (1) video (2) vim (1) virtualbox (1) vob (1) vobcopy (1) wake on lan (1) watch (1) webkamera (1) webszerver (1) wget (1) which (2) whitespace (2) who (1) wifi (1) windows (2) wol (1) X (1) x264 (1) xargs (4) xbacklight (1) xclip (1) Xdialog (1) xml (1) xmllint (1) xrandr (2) xxd (3) yes (1) youtube (1) youtube-dl (1) zárójeles (1) zbar (1) zene (1) zenity (2) zip (1) Címkefelhő

jhead fájlátnevezés

2017.04.30. 10:00 | sala | 4 komment

Fényképek tömeges átnevezésekor talán a legegyszerűbb eszköz a jhead. A következő parancs a kép készítésének időpontja alapján nevezi át a jpeg fájlokat:

jhead -n%Y%m%d_%H%M%S_%f *.jpg

A futtatás után imgp1000.jpg fájlból 20170428_100145_imgp1000.jpg lesz. Többféle formátumot használhatunk, nekem a fenti példa főleg akkor hasznos, ha több géppel fényképezek egyszerre, ezzel időrendbe lehet tenni a fájlokat. (Persze többnyire csak ezután)

 Biztos meg lehet ezt oldali exiftoollal is, ha igen, otegi megírja.

Címkék: digitális fénykép jhead

du rejtett alkönyvtár

2017.04.27. 10:00 | sala | Szólj hozzá!

Egy alkönyvtáram helyfoglalását akartam ellenőrizni du-val, de valahogy hiányzott néhány gigabájt.

Az általam többynire használt

du -ms *

sajnos teljesen ignorálja a rejtett alkönyvtárakat. Ha azokról is adatra lenne szükségünk, akkor a következő módon kell du-t meghívni:

du -ms .[!.]* *

Címkék: du

defrag

2017.04.18. 10:00 | sala | Szólj hozzá!

Bár szinte mindig linuxos parancssori eszközökről írok, elvileg használhatunk parancssort más operációs rendszereknél is. Egy Windows Vistás gépnél (nem, nem az enyém) szerettem volna ellenőrizni a merevlemez töredezettségét. A beépített GUI teljesen használhatatlan: nem ad semmi információt arról, hogy mennyire töredezett a lemez, munka közben is csak annyit ír ki, hogy a töredezettségmentesítés több óráig is eltarthat, de nem írja ki hogy hol tart a munkában.

A programnak van egy használhatóbb parancssoros változata is:

C:\windows\system32>defrag C: -a -v
Windows Lemeztöredezettség-mentesítõ
Copyright (c) 2006 Microsoft Corp.

Elemzési jelentés a következõ kötethez: C:

    Kötetméret                          = 140 GB
    Szektorcsoportméret                 = 4 KB
    Felhasznált terület                 = 121 GB
    Szabad terület                      = 19.18 GB
    Szabad terület (százalék)           = 13 %

Fájl töredezettsége
    Fájl töredezettsége százalékban     = 1 %
    Áthelyezhetõ fájlok összesen        = 262,353
    Átlagos fájlméret                   = 483 KB
    Összes töredezett fájl              = 2,051
    Összes töredékek száma              = 8,266
    Töredékek átlagos száma fájlonként  = 1.03
    Nem áthelyezhetõ fájlok összesen    = 72

Szabad terület töredezettsége
    Szabad terület                      = 19.18 GB
    Szabad terület összesen             = 32,639
    Szabad területek átlagos mérete     = 616 KB
    Legnagyobb összefüggõ szabad terület        = 4.62 GB

Mappa töredezettsége
    Mappák száma                        = 33,941
    Töredezett mappák száma             = 31
    Mappatöredékek száma                = 121

Fõ fájltáblázat (MFT) töredezettsége
    A teljes MFT-méret                  = 298 MB
    MFT-rekordszám                      = 264,595
    MFT-használat százalékban           = 86
    Összes MFT-töredék                  = 8

    Megjegyzés: Az NTFS-kötetek 64MB méretûnél nagyobb fájltöredékeit nem tartalmazza a töredezettségi statisztika

    Nem kell töredezettségmentesíteni a kötetet.

Végül a töredezettségmentesítést nem futtattam le a, de elvileg a következő parancs kellett volna:

defrag C: -v

 

Címkék: windows defrag töredezettségmentesítés

glances

2017.04.15. 10:00 | sala | Szólj hozzá!

Már több tophoz hasonló programról írtam (iotop, jnettop, lm_sensors) nemrég hívták fel a figyelmemet egy olyan programra, ami igyekszik az összes ilyen erőforrást egyszerre figyelni (más programokra épülve persze), így egyetlen egy képernyőn ellenőrizhetjük a gépünket (értsd: kereshetjük, hogy mi a fene lassította már megint le).

Hosszas magyarázat helyett a következő screenshot elég jól megmutatja, mire képes a glances:

glances.png

 A tippet köszönöm Ricsinek.

Címkék: top glances

exiftool if

2017.04.04. 10:00 | sala | Szólj hozzá!

Az exiftool oldalán olvastam ezt a figyelmeztetést:

If you find the need to use "find" or "awk" in conjunction with ExifTool, then you probably haven't discovered the full power of ExifTool. Read about the -ext, -if, -p and -tagsFromFile options in the application documentation.

Nos, valóban szoktam használni find-ot (sőt, cut-ot, grep-et...) exiftoollal, szóval megnéztem az ajánlott opciók közül if-et.

Tegyük fel van rengeteg képünk amiket különféle fényképezőgépekkel készítettünk. Azon belül pedig természetesen különféle beállításokkal. A következő paranccsal megkereshetjük a Pentax K-x géppel ISO 400-as beállítással készült képeket és kilistázhatjuk a rekeszt és az expozíciós időt:

$ exiftool -aperture -shutterSpeed -if '$Model eq "PENTAX K-x"' -if '$ISO eq 400' ~/Pictures/2016*
======== /home/user/Pictures/20160304/imgp7890.jpg
Aperture                        : 13.0
Shutter Speed                   : 1/60
======== /home/user/Pictures/20160305/imgp7891.jpg
Aperture                        : 13.0
Shutter Speed                   : 1/60
   58 directories scanned
  587 files failed condition
    2 image files read

Címkék: if exiftool

cp helyett rsync

2017.03.09. 10:00 | sala | Szólj hozzá!

A cp (copy) parancs az egyik legalapvetőbb utasítás, de van néhány hátránya. Leginkább engem az zavar, hogy nem kapok arról visszajelzést, hogy hol is tart a másolás. Elég sokan azt javasolják, hogy használjunk inkább rsync-et. Korábban erről a parancsról már írtam, archiváláshoz használom.

Ha cp helyett a következő paraméterezését szoktam használni:

rsync -ah --progress

Bátrabbak akár a alias-t is beállíthatnak, hogy cp helyett ez fusson, ezzel kapcsolatban azért vannak fenntartásaim.

Címkék: cp rsync

ffmpeg hangosítás

2017.03.03. 10:00 | sala | Szólj hozzá!

Ha túl halk egy videónk, a következőképpen hangosíthatjuk fel egyszerűen:

Először is elemeztetjuk ffmpeggel a hangsávot:

$ ffmpeg -i input.mp4 -af "volumedetect" -f null /dev/null

[Parsed_volumedetect_0 @ 0x18157c0] n_samples: 349184
[Parsed_volumedetect_0 @ 0x18157c0] mean_volume: -24.5 dB
[Parsed_volumedetect_0 @ 0x18157c0] max_volume: -9.5 dB
[Parsed_volumedetect_0 @ 0x18157c0] histogram_9db: 13
[Parsed_volumedetect_0 @ 0x18157c0] histogram_10db: 28
[Parsed_volumedetect_0 @ 0x18157c0] histogram_11db: 179
[Parsed_volumedetect_0 @ 0x18157c0] histogram_12db: 513

Ez elég sok mindent kiír, vastaggal jelöltem a számunkra lényeges értéket. Ezután ezt ez értéket felhasználva felhangosíthatjuk a videót:

ffmpeg -i input.mp4 -af "volume=9.5dB" -vcodec copy -acodec libvo_aacenc -b:a 192k output.mp4

Nyilván ez egy igen egyszerű módszer, lehet ennél sokkal jobb módszereket is találni, de az esetek többségében nekem ez pont elég.

Forrás:http://superuser.com/a/323127/8240

Címkék: audio hangosítás ffmpeg

lsof port

2017.01.07. 10:00 | sala | 3 komment

Arról már írtam, miként lehet lsof használatával megtalálni, melyik process nyitott meg egy fájlt. A program arra is használható, megy megtaláljuk, melyik program fogja a portjainkat.

Lekérdezhetjük a port száma alapján:

$ lsof -i tcp:17500
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dropbox 6153 user 76u IPv4 33907 0t0 TCP *:17500 (LISTEN)
dropbox 6153 user 77u IPv6 33906 0t0 TCP *:17500 (LISTEN)

Lekérdezhetjük a szolgáltatás neve alapján is:

$ lsof -i :ntp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 3667 chrony 1u IPv4 23833 0t0 UDP *:ntp
chronyd 3667 chrony 2u IPv6 23834 0t0 UDP *:ntp

Címkék: port lsof

ffmpeg osztott képernyő

2017.01.04. 10:00 | sala | Szólj hozzá!

Az előző bejegyzésemben szerepelt két osztott képernyős felvétel, amit ffmpeggel készítettem.

Az első felvételnél két videót ragasztottam egymás mellé, így a két 1920x1080-as videóból egy 3840x1080-as videót kaptam:

ffmpeg -i bal.mkv -i jobb.mkv -filter_complex "[0:v]pad=iw*2:ih[bg]; [bg][1:v]overlay=w" output.mkv

A második esetben a bal oldali videó bal felét a jobb oldali videó jobb felével ragasztottam össze és egy néhány pixeles fekete csíkkal emeltem ki az összeillesztés helyét. Az eredmény így egy 1920x1080-as videó:

ffmpeg -i bal.mkv -i jobb.mkv -filter_complex "[0:v]crop=iw/2-4:ih:0:0[left]; [1:v]crop=iw/2:ih:ow:0[right]; [left]pad=2*iw+8:ih[bg]; [bg][right]overlay=w" output.mkv

Címkék: ffmpeg

Videostabilizálás

2017.01.01. 10:00 | sala | Szólj hozzá!

Ha nem állvánnyal készítjük a videóinkat akkor jó eséllyel remegős lesz a felvétel amit utána korrigálni illik.

A vid.stab könyvtár több editáló programban is megtalálható, én ffmpeggel használtam.

Könnyen lehet, hogy a disztribúciónkban található ffmpegben nincs bent ez a könyvtár és saját ffmpeget kell fordítanunk.

A stabilizálás két lépésből áll, először csak megvizsgálja a videót a program és egy transforms.trf fájlban gyűjti össze az adatokat, a második lépesben e fájlt felhasználva történik a tényleges stabilizálás:

ffmpeg -i input.mov -vcodec libx264 -acodec aac -vf vidstabdetect output.mkv
ffmpeg -i input.mov -vcodec libx264 -acodec aac -vf vidstabtransform output.mkv

Eredeti videó

Nem túlzottan remeg, de teljes képernyőn azért jól látszik, hogy nem használtam állványt.

Stabilizált videó

Egymás mellett a két videó teljes méretben

Egymás mellett a két videó fél méretben

 

Címkék: ffmpeg vid.stab

encfs --reverse

2016.12.03. 10:00 | sala | Szólj hozzá!

Általában ha egy alkönyvtárat titkosítunk (pl. encfssel) akkor titkosítva tároljuk az adatokat a merevlemezen és csak jelszóval férhetünk hozzá a titkosítatlan adatokhoz. Lehetőségünk van ennek a fordítottjára is.

Akiben felmerül, hogy mi értelme van ennek: Van egy alkönyvtáram amit lokálisan nincsen titkosítva (annyira nem tikos) de azért a felhőbe nem szeretném titkosítatlanul feltölteni.

Ha van egy titkosítatlan alkönyvtárunk (/tmp/dir1) akkor a következő paranccsal titkosíthatjuk ezt:

encfs --reverse /tmp/dir1 /tmp/dir2

Néhány kérdés után (a jelszót is meg kell adnunk kétszer) létrejön a /tmp/dir2 alkönyvtár, ami a /tmp/dir1 titkosított változata. Már a fájlnevek is titkosítva vannak benne, így nem kell attól sem tartanunk, hogy a fájlnevek sokat elárulnak a tartalomról. Valójában ez persze csak egy virtuális fájlrendszer, vagyis nem fog órákig futni a titkosítás és nem is foglal el helyet a merevlemezen.

Nagyon fontos, hogyha vissza szeretnénk állítani a titkosított állapotból az eredetit, akkor nem elég a /tmp/dir2 alkönyvtár tartalma. Az előző parancs létrehoz még egy rejtett fájlt (/tmp/dir1/.encfs6.xml) amire szintén szükségünk lesz (és persze a jelszóra is):

ENCFS6_CONFIG=/tmp/dir1/.encfs6.xml encfs /tmp/dir2 /tmp/dir3

Ezután /tmp/dir3 az eredeti titkosítatlan verziót mutatja.

A backup programtól függően az is lehet, hogy encfs --reverse parancsot inkább rootként --public kapcsolóval együtt érdemes futtatnunk.

 

 

Címkék: backup titkosítás encfs

upower

2016.11.30. 10:00 | sala | Szólj hozzá!

Írtam már az acpi-ről amivel az akksi állapotát (is) ellenőrizhetjük. Az upower még több információt ad.

Először is kilistázhatjuk az upower által felismert eszközöket:

$ upower --enumerate
/org/freedesktop/UPower/devices/line_power_AC0
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/DisplayDevice

Valójában csak a battery_BAT0-ról fog érdemi információt adni:

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               ASUSTeK
  model:                N750-62
  power supply:         yes
  updated:              Thu 24 Nov 2016 09:11:57 PM CET (6 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               discharging
    warning-level:       none
    energy:              42.313 Wh
    energy-empty:        0 Wh
    energy-full:         48.762 Wh
    energy-full-design:  69.486 Wh
    energy-rate:         23.831 W
    voltage:             11.1 V
    time to empty:       1.8 hours
    percentage:          89%
    capacity:            69.7435%
    technology:          lithium-ion
    icon-name:          'battery-full-symbolic'
  History (charge):
    1480018317    89.000    discharging
  History (rate):
    1480018317    23.831    discharging

Címkék: acpi battery upower

dirty cow

2016.10.27. 10:00 | sala | Szólj hozzá!

A dirty cow sebeshetőséget tesztelhetjük egy speciális programmal.

A /tmp/teszt fájl rooté és senkinek sincsen rá írási joga, néhány 'a' betű van benne:

$ ls -l /tmp/teszt
-r-----r-- 1 root root 5 Oct 26 08:55 /tmp/teszt
$ cat /tmp/teszt
aaaa

Nem túl meglepő módon sima felhasználóként nem tudunk a fájlba írni

$ echo 'bbbb' >> /tmp/teszt
bash: /tmp/teszt: Permission denied

A dirty cow tesztprogram használatával viszont meglepő módon bele tudunk írni a fájlba:

$ ./dirtyc0w /tmp/teszt cccc
mmap 7f7b1ab10000
madvise 0
procselfmem 50000000
$ cat /tmp/teszt
cccc

A sebeshetőség 2007 óta van benne a Linux kernelben, így mindenkinek erősen javasolt a frissítés.

Címkék: linux kernel dirty cow

pass

2016.10.14. 10:00 | sala | Szólj hozzá!

A nem túl fantáziadús nevű pass a Unix filozófiát követve egy igen egyszerű parancssoros jelszómenedszer. Magát a rejtjelezést gpg-re bízza.

Feltételezve, hogy gpg-ben van már egy Kulcs nevű kulcsunk, pass-t a következőképpen inicializálhatjuk:

pass init Kulcs

Jelszavaink változását git-ben is tárolhatjuk:

pass git init

Ez lehetőséget ad persze arra is, hogy a jelszavakat valami (remélheően védett) git szerverre feltöltsük.

Új jelszó hozzáadása:

pass insert web/dropbox

A jelszavakat csoportokba (és alcsoportokba) szervezhetjük, a fenti példában a web csoport dropbox nevű jelszavát menthetjük el. Kétszer kell beírni a jelszót, hogy a hibákat elkerüljük.

Ennek hatására létrejön a ~/.password-store/web/dropbox.gpg fájl ami a megadott gpg kulccsal van rejtjelezve.

Rögtön látszik itt az a két dolog ami miatt kritizálni szokás pass-t.

1. A fájl neve (ami nincs titkosítva) rögtön utal a szolgáltatásra. Az rögtön támadási lehetőség, ha tudni lehet, hogy milyen szerverekhez tárolunk el jelszót.

2. Általában nem egyszerűen szolgáltatásnév-jelszó párost kell eltárolnunk. Szinte mindig el kell tárolnunk egy login nevet is, elég gyakran egy webcímet, néha még több információt.

pass insert -m web/teszt

A második problémára pass azt a megoldást adja, hogy képes többsoros jelszót is tárolni (-m kapcsolóval), ahol az első sor az igazi jelszó, a többi sor a kiegészítő információkat tartalmazza.Itt igazában ránk van bízva, hogy a többi sorba mit írunk, a többen (pl. a qtpass GUI) a következő template használatát javasolják:

jelszó
login: usernév
url: webcím
többi komment

 Jelszavakat kilistázhatjuk (tree segítségével jeleníti meg az eredményt):

$ pass ls
Password Store
└── web
    ├── dropbox
    └── teszt

Kereshetünk finddal

$ pass find box
Search Terms: box
└── web
    └── dropbox

 A jelszót pedig show-val nézhetjük meg.

$ pass show web/dropbox
...

 Számtalan pass-ra épülő GUI van (Linux, Windows, Android, IOS, de még emacs csomag is), így az is használhatja, aki nem annyira kedveli a parancssort.

Címkék: jelszó pass

fzf

2016.10.08. 10:00 | sala | Szólj hozzá!

Az fzf (fuzzy finder) project egy parancssoros eszköz ami egy szövegfájlban tud olyan sorokat keresni amelyek "nagyjából" megfelelnek a keresési feltételünknek.

Önmagában ez elég haszontalan, viszont más programokkal (leginkább magával a shell-lel) összekapcsolva nagyon hasznos lehet. Elsőre kicsit fura volt használni, de minél többet használom annál kényelmesebbnek tűnik.Tipikusan olyan program aminél a leírások után nem volt világos hogy mire is jó, csak használatban derült ki számomra. (És az én leírásom sem lesz jobb ebből a szempontból).

CTRL-R

A CTRL-R segítségével ugye a bash history-ban kereshetünk, vagyis a korábban kiadott parancsaink között. Miután fzf-et installáljuk CTRL-R megváltozik. Egyrészt egy sor helyett egy teljes ablakban kereshetünk a korábbi parancsok között, másrészt begépelve a parancs egy részét, ügyesebben találja meg a korábbi parancsunkat. Egy gyakori példa, hogy egy adott alkönyvtárba akarok belépni ami elég mélyen van a faszerkezetben, legyen mondjuk ez a /egy/ketto/harom/kutya. Tudom, hogy már többször kiadtam a cd /egy/ketto/harom/kutya parancsot. Hagyományosan CTRL-R segítségével vagy cd-re keresek (de akkor a többi könyvtárváltásom is előjön) vagy kutya-ra (de akkor a könyvtárnevet tartalmazó többi parancs is előjön). fzf-fel elég beírnom annyit, hogy "cd kutya" és megtalálja a parancsot.

CTRL-T

CTRL-T hatására fzf az aktuális alkönyvtár fájljai között keres rekurzívan és a kiválasztott fájl nevét másolja a parancssorba.

**<TAB>

Nem mindig az aktuális alkönyvtárban keresünk, ha egy másik alkönyvtárban akarunk keresni, akkor **<TAB> hozza elő fzf-et.

feh -Fd ~/Pictures/**<TAB>

A példában a feh képmegjelenítőt használom, a ~/Pictures alkönyvárban fog képeket keresni.

Nem feltétlenül fog feh az összes fájl között keresni.

feh -Fd ~/Pictures/*_ef.jpg**<TAB>

Ebben a példában csak azokat a fájlokat listázza, amelyekre _ef.jpg "illeszkedeik". (Én így jelölöm az expozíciósorozattal készített fájljaimat).

Egyebek

Kicsit véletlenszerűnek tűnő módon fzf projectbe néhány egyéb parancs támogatása is bekerült (aztán később rájöttek, hogy ezt nagyon nehéz lesz karbantartaniuk, szóval már nem nagyon raknak be új parancsokat). Pl. támogatják a kill-t, vagyis a következő esetben

kill -9 <TAB>

fzf indul el és az éppen futó process-ek közül választhatunk.

Míg

unalias **<TAB>

esetén a beállított alias-ok között kereshetünk.

Címkék: fzf

gpg cache

2016.10.03. 10:00 | sala | Szólj hozzá!

gpg használatakor kényelmes, hogy a jelszót (passphrase-t) nem kell mindig begépelni, hanem egy ideig megjegyzi a rendszer. Biztonságtechnikailag viszont ez időnként elég bosszantó. A következő paranccsal el lehet felejtetni az éppen megjegyzett jelszavakat (feltéve, hogy gpg-agent-et használunk, és nem az elég agresszív gnome keyring managert):

echo RELOADAGENT | gpg-connect-agent

forrás: http://askubuntu.com/a/558158

Címkék: gpg

mkv vágása

2016.09.30. 10:00 | sala | Szólj hozzá!

Egy hosszabb mkv fájlból újrakódolás nélkül kivághatunk részleteket ffmpeggel:

ffmpeg -i hosszu.mkv -t 21.5 -c copy rovid.mkv

A fenti parancs az első 21.5 másodpercből készít új fájlt. Ha nem a fájl legeleje kell nekünk, akkor -ss kapcsolót kell használnunk.

Címkék: mkv ffmpeg

java keystore jelszó

2016.09.08. 11:00 | sala | Szólj hozzá!

Generáltam egy java keystore-t, benne egy kulcspárral:

keytool -genkey -noprompt -alias mydomain -keyalg RSA -keystore test_keystore.jks -keysize 2048 -dname "CN=commandline.blog.hu, C=HU" -storepass 123456  -keypass jelszo

A keystore jelszava 123456 a kulcspáré jelszo.

Brute force

Elég sok eszköz van, amivel brute force támadással megpróbálhatjuk feltörni a keystore jelszavát, én a keystorebreakert próbáltam ki, itt megadhatjuk milyen karakterek fordulhatnak elő a jelszóban. A legfeljebb 6 karakter hosszú csak számokat tartalmazó jelszavakat pillanatok alatt végigpróbálja:

java -jar KeystoreBreaker.jar test_keystore.jks 0123456789 000000 999999 4

Ehhez a feltöréséhez pár másodperc elég volt. Nyilván több idő kell ha nemcsak számok lehetnek a jelszóban, a legfeljebb 6 hosszú szám+kisbetű összes lehetőségének végigpróbálásához a program szerint 1.5 óra kellene, szám+kisbetű+nagybetűnél kb. 2 nap.

Itt tartottam a bejegyzéssel, ide jönne a rész ami leírja, hogy milyen jelszót (ne) válasszunk, amikor találtam még valamit.

Changepassword

 A changepassword nevű programmal egy keystore jelszavát változtathatjuk meg. Megkérdi a régi jelszót, az újat és létrehoz egy új keystore-t az új jelszóval ami a régi kulcsait tartalmazza:

$ java ChangePassword test_keystore.jks test_keystore2.jks
Enter keystore password: fogalmamsincs
Changing password on 'test_keystore.jks', writing to 'test_keystore2.jks'...
Enter new keystore password: ujjelszo

Egy igen furcsa van a programban, nagyszerűen működik akkor is, ha rossz jelszót adunk meg. A programot innen töltöttem le, élesben nem próbáltam ki, de a fenti egyszerű teszt alapján működik. A szerző alapján a kulcspár jelszavát nem lehet így lecserélni, az valóban biztonságos.

Titkon azért abban bízom én értettem valamit félre valamit és nem ennyire rossz a java keystore jelszókezelése.

Címkék: java jelszó brute force keystore keytool

grive2

2016.07.17. 10:00 | sala | Szólj hozzá!

Régóta próbáltam már keresni valamit amivel szinkronizálni lehet Linux alatt a Google Drive tartalmát. Az egyetlen eszköz ami nekem valamennyire működött a grive2.

Először a következő paranccsal kell indítani:

grive2 -a

Ez megnyit egy weboldalt ahol engedélyezhetünk hozzáférést google drive-unhoz, az ott kapott tokent bemásolva a parancssorba.

Ezután már elég a következő is:

grive2

Igazából ez a program sem működik túlzottan jól, egy igen friss javítás kellett ahhoz, hogy a feltöltés is működjön.

 

Címkék: google drive grive2 grive

rm helyett shred

2016.07.14. 10:00 | sala | Szólj hozzá!

Korábban már használtam shredet a merevlemez teljes tartalmának törléséhez, de ezt használhatjuk fájltörléshez is.

/dev/sdb6 partíción teszteltem:

$ echo 'EZNINCSAPARTICION' > test1.txt
$ strings /dev/sdb6 | grep -i EZNINCS
EZNINCSAPARTICION
$ rm -f test1.txt
$ strings /dev/sdb6 | grep -i EZNINCS
EZNINCSAPARTICION

Látszik, hogy a fájl törlése után is megmarad a partíción a fájl tartalma.

$ echo 'EZTENYLEGNINCSAPARTICION' > test2.txt
$ strings /dev/sdb6 | grep -i EZTENYLEG
EZTENYLEGNINCSAPARTICION
$ shred --remove test2.txt
$ sudo strings /dev/sdb6 | grep -i EZTENYLEG
$

Ha rm helyett shred-et használunk, akkor törlés után nincs nyoma a fájl eredeti tartalmának.

Címkék: rm shred

pwgen

2016.07.11. 10:00 | sala | Szólj hozzá!

Jelszót nem túl egyszerű generálni, szerencsésebb ezt is programra bízni. A pwgen elvileg olyan jelszavakat generál (a hosszt mi adhatjuk meg) amiket meg is lehet jegyezni.

A program érdekessége, hogy figyeli miként indítjuk a programot, és másként működik ha a program kimenetét átirányítjuk.

Alapesetben jó sok jelszót generál, hogy a mögöttünk leskelődő kolléga nem tudja a jelszót:

$ pwgen 10
Ath0iiph4u Aigh8aeh0o kia2ohd9Ei oe6iiRoo4N oxeizeiPh1 AeHuu7Zohp eiZ6eigahM
uf4aiph5Oi Epuxee6ieh aD7ieghei7 phogi2eiG2 oa6maeDai2 oop2ieh0Ua Aimeid3ewu
eicoo5Wieb yuT7siecho tuupo5uu0F thi1Oj3gie Xooyeux3oo aapozu6Cho Ohha3coodu
yaGhue7Zah uFooji4oox quuteec7Es ao8cuPh3ru AhGh4ohGa7 iHeivae6fi Que3oosaus
Ve9maek5wa ieG4autoob ahPith1aex eewaom3uF8 se1ahGhios Ba2chiez6A Oquoof9zo7
thiPhai2ph ha9Fe2joi0 seeWung4Na mahth9Noh8 Ahy4uth8Yi Phout3ahj3 coeThiwe0l
ze8lei4Yux julee6Asoo iubeeph1Oo foo9Iez9on jiTee1aeYi LohVaeng8s ieV8ui5ahf
Vie7eijein Eingoo4ahw Fai2zuuqu8 UTh8yiPier Ooyu4dohS1 KoocahNae5 oTha3mie3s
Gae2apie9i Quoh1Foh9a kai7Va4Iec soonioHei3 Ahque3engu ieY2Tai5bi quieje6Mia
aiwoob3Pim eeNu6Tei5v kool1dohLe ohies1Eich goht1Shoqu ieH3ahghoh tho2Sathai
eiK4uNgeen ahjook6eoG eiX5ieWeed aigaeFi6xu ulie0Oowah wohh9giMai ohHe8ieGie
bu9giebieX aeK7ohpoki ego2Thiepa eaPhaeMai1 ohBu6zieng koh5Aith4e Xo8veiquak
on4AhZei6g eish4Theih Batah5Opie lia4ohJ3oP aeN1piu8Fe Ievishah0i Oofagh1tah
Aix4Bich1g Eijeej6iej eeYah8aeSh ohdahh8Eec vea7Otohnu aiCh4Bi2ho rei3Riexiw
LeiMadei6E ohsei3Iequ oux7ohNgoh ooZ5aephah aKi0Loo9ku Si1bu6eela roo4Ab2oph
iYee7eeCho Hei8Cae3Oh tha4uShaeb eshosie1Oh kaih2Wae2l je3Ieceeye eeboo2Noh0
xuaNil9pi5 Che2chi7So lixeeMie5M ieFeik3thu phaiz3Phoo uWo8obah4y ahv8Taevah
ha5foo0Iph dougauPae4 eighuY1ael Gouthoh5yo aa4Eikai0j ii4ShixaeT eim2Wa8Xu5
ooC6ieQu7g Aerahr3ood AiBo5quuov SeL4Nuutha Uki9caewij wa2gaiNga0 teiPaef0Pu
ahGhao5eeH ahveiN1ahx shaekeQu1d bopheing9R Eephiet8ao toh8fiba2U gar7La8she

Ha átirányítjuk az outputot (az első példában fájlba, második példában clipboardra), akkor viszont csak 1 jelszót generál:

$ pwgen 10 > /tmp/a.txt
$ cat /tmp/a.txt
ohz7RaiGho
$ pwgen 10 | xclip

Ha ezek a jelszavak túl egyszerűnek tűnnek, akkor generáltathatunk bonyolultabbakat is (még a program sem igazából ajánlja ezt, hiszen ezeket szokta szinte mindenki leírni egy papírra és a monitorra ragasztani):

$ pwgen -sy 10 | cat
&f+=[7~D:x

A példákban szereplő egyik jelszót sem használom sehol.

Címkék: jelszó pwgen

gpg-zip

2016.07.08. 10:00 | sala | Szólj hozzá!

Írtam már korábban arról, hogyan lehet egy fájlt gpg-vel titkosítani. Ha egy teljes alkönyvtárat szeretnénk titkosítani, akkor gpg-zip-et használhatjuk:

$ gpg-zip -c -o titok.gpg dir
$ gpg-zip --list-archive titok.gpg
$ gpg-zip -d titok.gpg

Az első utasítás a dir alkönyvtárat titkosítja és létrehozza a titok.gpg fájlt. A második annak tartalmát listázza ki, a harmadik újra kicsomagolja a titkosított fájlt. Nyilván mindegyik kérdez jelszót.

Ha a korábbi példához hasonlóan inkább AES256-ot szeretnénk használni, akkor megtehetjük, de elég csúnya a szintaktika:

gpg-zip -c --gpg-args "--cipher-algo AES256" -o titok2.gpg dir

Azt igazából persze nem tudom, hogy miért jobb a gpg-zip mintha simán gyártanék egy tar-t és azt titkosítanám. Mivel gpg-zip egy shell script, belenéztem és azt látom hogy ez valóban csak a tart és a gpg-t kapcsolja össze.

Címkék: tar zip gpg gpg-zip

fallocate

2016.07.05. 10:00 | sala | Szólj hozzá!

Az előző bejegyzésben mutattam egy példát arra, hogyan lehet dd-vel lassan "rendes" és gyorsan sparse fájlt gyártani. Nyilván felmerül a kérdés, van-e mód arra, hogy gyorsan gyártsunk rendes fájlt. Számomra kissé meglepő módon van:

$ time fallocate -l 1G fallocateg.txt

real    0m0.003s
user    0m0.000s
sys     0m0.000s

$ ls -lsk fallocateg.txt
1048580 -rw-r--r-- 1 user live 1073741824 Jun 29 20:40 fallocateg.txt

A fallocate villámgyorsan működik és nem sparse fájlt hoz létre. Ha jól értem, akkor a trükkje az, valóban lefoglalja a helyet, de nem írja ki a drive-ra a rengeteg 00-t. Nem minden fájlrendszernél működik, pl. ext3 nem elég, ext4 kell neki.

Címkék: dd ext4 fallocate

sparse fájlok

2016.07.02. 10:00 | sala | 2 komment

Ha szükségem volt egy nagy tesztfájlra, többnyire a következő módszerrel készítettem a fájlt:

$ time dd if=/dev/zero bs=$((1024*1024)) count=1024 of=large.dat
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 12.3933 s, 86.6 MB/s

real    0m12.394s
user    0m0.005s
sys     0m0.480s

Az 1GB-os fájl elkészítése kb. 12 másodperc volt.

Listázzuk ki a fájlt, az egyszerűség kedvéért 1024 bájtos blokkméretben megnézve az elfoglalt blokkok számát:

$ ls -lsk large.dat
1048580 -rw-r--r-- 1 user live 1073741824 Jun 11 17:18 large.dat

Az 1048580 db. blokk reálisnak tűnik, 1024-gyel szorozva kb. 1GB-ot kapunk, a különbség (4096 byte) elhanyagolható.

Mivel a fájlt csupa 0-ból áll, elvileg van egy másik mód is az 1GB-os fájl létrehozására:

$ time dd if=/dev/zero bs=1 count=1 of=large2.dat seek=$((1024*1024*1024-1))
1+0 records in
1+0 records out
1 byte (1 B) copied, 6.7613e-05 s, 14.8 kB/s

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Ebben a példában dd-vel egyetlen bájtot iratok csak a fájlba, azt viszont seek segítségével pont ugyanoda írom ahol az előző példában a fájl vége volt. A parancs döbbenetesen gyorsan lefut, elég nyilvánvaló, hogy ennyi idő nem elég 1GB-nyi 0 lemezre írására.

Listázzuk ki a két fájlt:

$ ls -lsk large*
      4 -rw-r--r-- 1 user live 1073741824 Jun 11 17:19 large2.dat
1048580 -rw-r--r-- 1 user live 1073741824 Jun 11 17:18 large.dat

A fájlméret bájtra megegyezik, viszont az új fájl összesen csak 4 blokkot foglal az 1 GB helyett mivel sparse (ritka?) fájl jön létre, a rendszer nem tárolja feleslegesen a sok-sok 0 bájtot.

Nem minden fájlrendszer támogatja ezt, én ext3-mal teszteltem.

Az előnyei mellett nyilvánvaló veszélyei is vannak az ilyen fájloknak, például az ilyen fájlokat módosítva könnyen elfogyhat a lemezen a szabad hely akkor is, ha a látszólagos fájlméret nem nő.

 

Címkék: dd sparse

Fájl néhány bájtjának módosítása

2016.06.29. 10:00 | sala | Szólj hozzá!

Korábban már módosítottam egy partíciós tábla fejlécében néhány bájtot xxd és dd használatával, amikor egy fájllal akartam ugyanezt megtenni, akkor viszont nem teljesen működött a módszer:

dd if=/dev/zero of=test.dat bs=1 count=100
echo 00: FF | xxd -r > ff.dat
dd if=ff.dat of=test.dat bs=1 count=1 seek=50

Egy 100 bájtos tesztfájlban akartam az 51. byte-ot FF-re cserélni. Az eredmény kissé meglepő módon egy 51 bájt hosszú fájl lett, dd automatikusan levágta a fájl végét.

Ha azt szeretnénk, hogy dd ne vágja le a fájl végét és tényleg csak az 51. bájtot módosítsa, akkor a következő parancs kell (a lényeg a conv=notrunc):

dd conv=notrunc if=ff.dat of=test.dat bs=1 count=1 seek=50

Címkék: dd xxd