wtorek, 25 stycznia 2011

Zmiana hasła root'a w Debian'ie

Zmiana hasła root'a w sytuacji gdy nie znamy obecnego hasła nie powinna być trudna ...
ale niestety różni się pomiędzy poszczególnymi dystrybucjami.
W większości przypadków wystarczy uruchomić system w trybie single user, niestety sytuacja nie jest tak prosta w Debian'ie.

Zacznę więc od początku:
- uruchamiamy Debiana ...,
- na ekranie z możliwością wybrania kernal'a zaznaczmy opcję single user (w moim przypadku była na samym dole),
- wciskamy "e" od edit,
- najeżdżamy na wiersz z kernelem i wciskamy "e" za single user wpisujemy init=/bin/bash
lub samo /bin/bash
- wciskamy enter,
- wciskamy "b" od boot,
- w tym momencie system powinien uruchomić się w trybie single user,
- jeżeli myślicie, że wystarczy teraz wpisać passwd to ... się mylicie,
- należy przemontować (ciekawe słowo przemontować i nawet sprawdzanie pisowni przy nim nie wariuje) główny system plików / w tryb rw następującym poleceniem "mount -o remount rw /"
- zmieniamy hasło przez wpisanie samego passwd
- wklepujemy dwa razy hasło, dajemy reboot i możemy cieszyć się z nowego hasła.

sobota, 8 stycznia 2011

konwertowanie jpg do pdf, convert

Na pewno zdarzyło się wam skanować całą stertę dokumentów, następnie trzeba było je jakoś połączyć i konwertować na dokument w formacie pdf.
Wieki temu robiłem to ręcznie - otwierałem w gimpie, kopiowałem, wklejałem do OpenOffice, eksportowałem jako pdf ... tylko po co się tak męczyć (samo skanowanie jest wystarczająco czasochłonne).

W celu zrobienia tego automagicznie niezbędna będzie maszyna z Linux'em i zainstalowane ImageMagick.
Skanuję, skanuję i skanuję zapisując wyniki jako 1.jpg, 2.jpg, ... 10.jpg, i decyduję się konwertować wszystkie jpg'i do pdf'u:
convert *.jpg dokument.pdf

Otwieram dokument.pdf ... , a tam jakaś masakra, niby wszystkie jpg są przekształcone, problem w tym, że strony nie są po kolei.

Wpisuję ls żeby sprawdzić w jakiej kolejności wyświetlają się pliki:
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
15.jpg
16.jpg
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg

No to pomyślałem sort mi pomoże i dałem ls | sort -g:
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg
12.jpg
13.jpg
14.jpg
15.jpg
16.jpg

Ok wszystko fajnie, pięknie ale ja to potrzebuję mieć w jednej linii w przeciwnym razie znowu będzie dłubanina z przekształceniem.

Nie odpuszczam więc i dałem ls | sort -g | paste -s:
1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg 11.jpg 12.jpg 13.jpg 14.jpg 15.jpg 16.jpg

Ta dam wszystko w jednej linii, teraz wystarczy skopiować całą linię z nazwami jpegów, i wpisać:
convert (wkleić za jednym zamachem wszystkie nazwy jpegów, przygotowane powyżej) dokument.pdf.

W ten sprytny sposób można zaoszczędzić mnóstwo czasu (w zależności od ilości skanowanych i konwertowanych dokumentów).

Próbowałem to jakoś uskryptowić do końca ale coś nie chciało zatrybić (za pomocą pętli i xargs), obiad już był przygotowany ... więc poległem.

czwartek, 6 stycznia 2011

rm -rf , argument list too long

Często spotykam się z takim problemem, multum plików np. z sesjami i nikt ich nie czyścił.
Klient łączy się za pomocą klienta FTP z serwerem przechodzi do katalogu, w którym ma np. 200 000 plików z sesjami Joomli i szerzy zgorszenie, że mu połączenie zrywa.
Gdy chcemy później usunąć te pliki i dajemy rm -f tmp/* pojawia się właśnie komunikat "argument list too long".
Mam dwie metody rozwiązania tego problemu:
- uruchamiamy mc (Midnight Commande) zaznaczamy wszystkie pliki i dajemy usuń,
- przechodzimy do katalogu w którym znajdują się pliki i wprowadzamy ls | xargs rm -f.
Dlaczego nie stosuję opcji rm -rf, ponieważ wolę nie ryzykować jeśli coś zrobię nie tak to przy samej opcji -f usunie mi tylko pliki, ale gdy dam -rf to usunie mi również katalogi (takiej sytuacji wolałbym uniknąć).
Jeżeli podczas usuwania plików pojawi się komunikat błędu is a directory to można tego uniknąć przez:
ls | grep -v nazwa_katalotu | xargs rm -f

Przełącznik -v dla polecenie grep oznacza, że zostaną wypisane wszystkie wyniki, oprócz tych zawierających wyraz umieszczony po grep -v.
Istnieją również inne sposoby usuwania dużej ilości plików, niektórzy korzystają do tego celu z find + exec lub find + delete. Opisane powyżej metody nigdy mnie nie zawiodły więc postanowiłem nie rozdrabniać się więcej nad rm -f.