Tips & Tricks

Różne krótkie sztuczki, aby szybko potem zrobić proste zadania.

Jednolinijkowce

Skrypty jednolinijkowe, aby szybko wykonać proste, lub bardziej złożone zadania.

Obsgługa GnuPG

Wyeksportowanie klucza publicznego:

gpg --armor --output public.key --export <user-id>

Edycja klucza w celu dodania kolejnego adresu email (uid):

gpg-agent -v --pinentry-program /usr/local/bin/pinentry-curses --no-detach
gpg --edit-key <user-id>
> adduid
> help
> quit

Kopiowanie zdjęć dla fotografa

Skrypt do przeygotowania listy zdjęć do fotografa ma obecnie dwa tryby pracy: zwykły oraz z generowaniem poleceń dla DOSa:

# plik wejsciowy danych jest przykładowy
#
# przygorowanie zdjęć do formatu wiki na dwie kolumny
#
perl prepfoto.pl /tmp/wtp/foto.list | lam -s, - - | sed -E 's/^,//;s/(,[0-9])P/\1,P/;'

# przygotowanie polecenia do okienka DOSowego
#
perl prepfoto.pl --cmd /tmp/wtp/foto.list

Wynik polecenia wklejamy do okienka DOSa:

dir /s /b [... lista zdjec ...] > d:\photo\lista-zdjec.txt

# nastepnie kopiujemy znalezione pliki do katalogu roboczego
for /F "usebackq" %f in (`type d:\photo\lista-zdjec.txt`) do copy %f d:\photo\4-foto-papier\

Pozostaje tak przygotowane pliki przegrać na pendrive lub wypalić na płytę i odnieść do wywołania (wydrukowania) wszystkich zdjęć.

Kopiowanie MP3 pod MS Windows

z zachowaniem kolejności plików, np. przegranie czytanej bajki

FOR /F "usebackq" %f IN (`dir . /B /O:N`) DO copy %f E:\_katalog

TAGowanie plików MP3

Niektóre odtwarzacze mp3 (np. telefon Nokia) odtwarza pliki muzyczne tylko i wyłącznie po tag-ach mp3, np. artysta, rodzaj muzyki, album etc. Jeżeli mp3 powstał z płyty CD, to tagi w takich mp3 są kompletnie puste. Ale można sobie poradzić. Oto przykład dla plików, których nazwa zawierała tytuł utworu:

ls *.mp3 | perl -ne 'chomp; $f=$_;s/\.mp3$//;s/^[0-9]{2}_//;s/_/ /g; print "audiotag -a \"_ARTYSTA_\"  -y _YYYY_ -A \"_ALBUM_\" -g \"_RODZAJ_MUZYKI_\" -t \"$_\" $f\n";' | sh

Montowanie USB flash pod FreeBSD

Z lokalizacją dla pl_fonts

mount_msdosfs -L pl_PL.ISO8859-2 -D cp852 /dev/da0s1 /mnt/usb/
# [kopiowanie plików]
umount /mnt/usb

Uruchamianie unison

unison to narzędzie pozwalające na ręczną synchronizację katalogów w systemie lokalnym oraz zdalnym (synchornizacja może się odbywać w obydwie strony). Używam głównie do dystrybucji skryptów administracyjnych po serwerach.

unison ~/scripts/ ssh://fw.wtp3.org/cvs/unison/

Reinstalacja portu z jednoczesną zamianą na inny równoważny

Zaistniała konieczność zmiany portu security/openssl-stable na security/openssl. Ale konieczne było zrobić to bez "zgubienia" wszystkich zależności. W związku z tym wystaczy wydać polecenie:

portupgrade -f -o security/openssl openssl-stable

albo wersja mocno rozbudowana:

for pkg in `pkg_info -E 'php5-*'`
do
     orig=`pkg_info -q -o $pkg`; new=`echo $orig| sed -e's/php5/php53/'`; portupgrade -f -m'DISABLE_CONFLICTS=1' -o $new $orig
done

Informacja o zainstalowanych portach pasującyh do wzorca

Uzyskamy informację o zainstalowanych portach, których nazwy zawierają podany ciąg znaków. Wraz z krótką informacją o danym porcie.

pkg_info -Ix sasl

Przydatny ping przy rekonfiguracji topologi sieci

Konsola daleko, a trzeba znaleźć kabelek na switchu, czy patch-panelu:

ping -s <ADRES_IP> | tr : ^G                             (CTRL-V CTRL-G)

Poszukiwanie spamów w celu ich odblokowania

find /var/virusmails/2008/12 -type f -exec egrep -i '(skanska.pl|arimgr.gov.pl|plk-sa.pl|pkpenergetyka.pl|warta.pl)' /dev/null {} \; | awk -F ":" '{print $1}' | sort -u

Jest to zdecydowanie szybciej, aniżeli przeglądanie logów serwera SMTP. Co prawda w logach można znaleźć więcej informacji o listach odrzuconych, zanim trafiły w ręce amavisd...

Przeładowanie stref nameda

Dla przykładu: w pliku konfiguracyjnym są tylko definicje stref typu slave. Chcemy zassać zmiany z master DNSa. Zatem mozna to szybciutko zrobić:

cat include.conf.named | awk '/zone/ {print $2}' | tr -d '"' | xargs -n1 rndc reload

{i} W tym przykładzie strefy nie są umieszczone w widokach. Bo jakby były, to jest nieco inna składnia polecenia rndc.

Użyteczne dodatki do tcpdump

tcpdump -l -n -Xx -s 1024 -tttt  [_wyrazenie_podsluchu_]

Szybkie znalezienie plików, które trzeba ponownie dodać do RCS

ls RCS/ | sed -e 's/,v//' | xargs -n1 ls -lF

Uruchomienie mtree w celu zrobienia zrzutu drzewa katalogów

mtree -Pc -p /var/log -X /tmp/_var_log.exclude.mtree > _var_log.mtree

Zaś plik /tmp/_var_log.exclude.mtree zawiera1:

*.[0-9]
*.gz
*.bz2
*.rar

Prosta konwersja, aby słowa były objęte ciapkami

Potrzebne do wygenerowania parserów dla MoinMoin:

cat /var/tmp/_builtin | perl -pe "s/(\b)/'\1/g;"

Przygotowanie poleceń dla Makefile

 for f in `ls /bin/* /usr/bin/* /sbin/* /usr/sbin/*`; do cmd=` echo $f | sed -e 's!^.*/!!' | tr '[:lower:]' '[:upper:]'`; echo "$cmd?=           $f"; done | sort

Wycięcie pustych linii z pliku

ed - file <<< $'g/^$/d\nw'

Uruchomienie at

at 8pm + 3 days
cat /var/tmp/kopernik-20100220.txt | mail -s "Zapisy na warsztaty familijne" warsztaty@kopernik.org.pl
^D

curl -G http://localhost/server-status?auto

Kopiowanie struktury katalogów za pomocą cpio

find /var/ftpd/aqq -depth -print | cpio -pamVd /var/ftp/nowy-katalog

Zamiana tekstu na HTML

Potrzebne było przetworzenie tekstu (plain text) na postać HTMLową, aby ładnie prezentowało się po wklejeniu w edytorze Allegro. Wykorzystany jest program z ports, który takie coś wykonuje (skrypt PERLowy):

txt2html --eight_bit_clean --bold_delimiter % --infile /home/var/tmp/_allegro.txt

Więcej opcji i możliwości zapisano w manualu.

Oczyszczenie plików JPEG z EXIF

# --- najpier wyczyszczenie nagłówków totalnie ------------------
jhead -purejpg -norot *.JPG

# --- dodanie nagłówków EXIF, ale tylko z datą (na podstawie daty utworzenia pliku) ---
jhead  -mkexif -norot *.JPG

Dodanie watermarka do pliku za pomocą ImageMagick

for f in `ls *.jpg`; do composite -gravity SouthEast -dissolve 15 ../wtp3.png $f $f; done
# --- albo bardziej hardcore -----------
for g in Center SouthWest NorthEast; do foto.watermark -g $g `find ./ -type f -name '*.jpg' -mtime -+2d`; done

Więcej można znaleźć w poniższych linkach:

Przeniesienie baz RRD pomiędzy architekturami

RRDtool nie potrafi poradzić sobie z formatem pomiędzy różnymi architekturami (wersja OS, x32, x64). Dlatego jest prosty sposób na przeniesienie baz. Na serwerze źródłowym:

rrdtool dump filename.rrd filename.xml

Na serwerze docelowym (przyczym plik filename.rrd nie może istnieć):

rrdtool restore filename.xml filename.rrd -r

I już. Załatwione.

Programistyczne

Ustawienie poprawnego połączenia do mySQL

Chodzi głównie o kodowanie PL ogonków. Jeżeli domyślne wartości podczas instalacji pokrywają się z wymogami aplikacji, to nie ma problemu. Ale jak jest serwer typu VPS, to nie można na serwerze wymusić kodowania potrzebnego do aplikacji. Dlatego też:

<?php
 
$link = mysql_connect('localhost', 'root', '','');
IF (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_query('SET character_set_connection=utf8_polish_ci');
mysql_query('SET character_set_client=utf8_polish_ci');
mysql_query('SET character_set_results=utf8_polish_ci');
mysql_query(' SET NAMES utf8 ');
mysql_select_db('baza', $link);
 
?>

Tablica asocajcyjna w SHell-u

name="$1"
_pidfile=$(echo "$(eval echo \$${name}_pidfile)")

Getopt w SHell-u

# --- pobranie argument/ow skryptu ---------------------------------------
#
args=`getopt dv $*`

set -- $args
for i
do
        case "$i"
        in
                -v)
                        _virtual=1
                        shift;;

                --)
                        shift; break;;
        esac
done
ERROR: EOF in multi-line statement

Ciekawe narzędzia FreeBSD

Włączenie klawiatury USB dla Single User Mode

echo hint.atkbd.0.flags="0x1" >> /boot/loader.conf
echo ukbd_load="YES" >> /boot/loader.conf

Dla wersji 9.x działa następujący sposób (dla serwera Supermicro)

# --- /boot/loader.conf ------------------------------------------
#
kbdmux_load="YES"
hint.atkbdc.0.at="isa"
hint.atkbdc.0.port="0x060"
hint.atkbd.0.at="atkbdc"
hint.atkbd.0.irq="1"

Dzięki temu można w SUM mieć klawiaturę.

Sklejenie jednej kolumny w linie wielokolumnowe

cat plik | lam - - -
cat plik | paste -s -d ' ' -

Szybkie tworzenie galerii z katalogów

Zainstalowane z ports. Narzędzie do tworzenia galerii obrazków:

/usr/local/bin/igal2.sh <DIRECTORY>

Dodanie własnego favicon.ico dla strony

Gdy potrzeba "nadpisać" ustawienia apache'a w celu ustalenia własnego favicon.ico

<link href="/portalwiedzy184/my-icon.ico" rel="SHORTCUT ICON" />

Podstrony

Ciekawe linki zewnętrzne


{*} To z kategorii FreeBSD. I nie tylko.

  1. Plik exclude NIE MOŻE zawierać komentarzy. (1)