Wydrukuj tę dokumentację Pokaż jako slajdy

Różne ciekawe polecenia shell

Generowanie plików dla NSD

Wygenerowanie plików konfiguracyjnych dla nsd

for i in `jot 255 1 1024 1`; do j=`printf "%04d" $i`; cat www-ipv6-sys-ovh-000N.tmpl | sed -e "s/NNNN/$i/" > www-ipv6-sys-ovh-${j}.cf; done

Plik tmpl

; --- rekord IPv6 w OVH SoYouStart -----------------------------
;
www     IN      AAAA    2001:41d0:2:c7df::NNNN

Użycie seq

seq -f '%02g' 1 11

Sprawdzenie certyfikatu SSL

openssl s_client -connect serwer:port

Sprawdzenie certyfikatu STARTTLS

openssl s_client -starttls smtp -crlf -connect serwer:587

lftp mirror

Polecenie do wykonania mirroru zdalenego FTP

/!\ /!\ /!\ UWAGA /!\ /!\ /!\

  1. Polecenie --delete kasuje plik na docelowym miejscu, których nie ma w źródle

  2. Polecenie --reverse powoduje przesyłanie pliku z lokalnego komputera na ZDALNY serwer.

Tak więc polecenie trzeba stosować ze zrozumieniem.

lftp -c "set ftp:list-options -a; set ssl:verify-certificate false;open ftp://user:password@your.ftp.com; 
lcd /opt/backups/bsdbackup; cd /bsdbackup;
mirror --reverse --delete --use-cache --verbose --allow-chown --allow-suid --no-umask --parallel=2 --exclude-glob .svn"

Opcjonalnie można wykonać listę plików do włączenia (lub wyłączenia) i podać to jako parametr:

lftp -c "set ftp:list-options [...] --include-rx-from=/tmp/lftp.list"

mirror prostej strony za pomocą wget

wget --mirror --convert-links --adjust-extension --page-requisites http://www.bsdserwis.com

getopt w skryptach SHELLowych

/!\ Każdy parametr, który dopuszczamy do użycia należy jawnie podać w "spisie" w pętli while. W przeciwnym przypadku będą się pojawiać komunikaty o błędach.

while getopts "d:v?h" opt
do
    case $opt in
        v)
          ;;
        *)
          _show_help
          exit 3
          ;;
    esac
done

shift `expr $OPTIND - 1`

Odkodowanie LDIF dla UTF-8

A wszystko za pomocą sed-a (sprawdzone w systemie Linux):

#Join lines starting with space
sed -n 'H; ${ x; s/\n//; s/\n //g; p}' "$FILE" > "$FILE_JOINED"

#Decode lines containing base64 (those with double colon)
sed -r 's/(:: )([[:graph:]]+)/\1 '"`grep -oP ':: [[:graph:]]+' "$FILE_JOINED" |cut -c 4- | base64 -d`"'/g' "$FILE_JOINED"

Albo wersja jednolinijkowa:

ldapsearch -xLLL -b "ou=...,dc=domena,dc=tld" -s one '(ObjectClass=*)' cn givenName sn departmentNumber mail mailAlternateAddress | sed -n 'H; ${ x; s/\n//; s/\n //g; p}'  | sed -r 's/(.*:)(: )([[:graph:]]+)/echo "\1 `echo -n '\\3' |base64 -d`"/ge' 

Zamiana LDIFa do pliku CSV

Plik werjściowy musi być pozbawiony znaków cudzysłowa.

Skrypt do pobrania z github-a:

wget https://gist.githubusercontent.com/dansimau/674203/raw/c551ee11c7e4eeb60a0f5b1456c0656d3eeca1f6/ldif-to-csv.sh

Na przejściu jest skrypt PERLowy w celu "zbrylowania" pola departmentNumber w jedną linijkę:

cat _ibdim.users.ldif.decoded | perl -ne 'chomp;($key,$value) = split/:/;if( !$key) {$hash{"departmentNumber"} = join("",@BPA); foreach $k (qw/dn cn sn givenName departmentNumber/){printf( "$k:%s\n", $hash{$k});}print "\n"; @BPA=();}; $hash{$key} = $value;push (@BPA, $value) if $key =~ /departmentNumber/; ' | /root/bin/ldif-to-csv.sh cn givenName sn departmentNumber > ibdim.users.csv

@@@@



{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.