logo.png

C

PARSEURS

MODULES

LINUX

QBASIC

JAVA

APACHE

DB BERKELEY

RASPBERRY PI

Home Up


Contents


  • color.sh
    #!/bin/bash
    
    END="\033[0;39m"
    b=0
    while [ $b -le 1 ]
    do
      d=0
      while [ $d -le 9 ]
        do
          u=0
          while [ $u -le 9 ]
          do
            nn=$d$u
            BEGIN='\033['${b}';'${nn}'m'
            u=$[u+1]
    
            echo -ne "${BEGIN}${nn}${END} "
          done
        d=$[d+1]
        echo -e "\n"
        echo -en "\\033[$[${d}*3]G"
        done
        echo -e "\n"
        b=$[b+1]
    done
    
    # echo -ne "\033[1;91m $(cowsay yé)\033[0;39m"
    

  • netcat.sh
    #!/bin/bash 
    # rq: le 'B' majuscule ne passe pas avec telnet :/
    
    { 
      echo "FAST_"; 
      echo "DEbUG EXIT";
      echo "ENDMSG"; 
      sleep 3; 
    } | telnet 192.168.1.167 1808 >/dev/null 2>&1
    

  • rename.sh
    #!/bin/bash
    #set -x
    
    # pour le fun
    poloAreponduOui="/tmp/poloAreponduOui.txt"
    
    # %1: "texte a decouper"
    # %2: 1,2 ou 3 pour début, milieu et fin
    # %3: resultat
    decoupage()
    {
        tmp=$(echo "$1" | sed -e "s/\(.*\) - \(.*\)\(\.[[:alpha:]]*\)/\\$2/")
    
        if [ "$tmp" == "$1" ]
        then
    	echo "nom pas adapté a la substitution: $1"
    	exit 1
        fi
    
        eval $3=\'$tmp\'
    }
    
    if [ $# -lt 1 ]
    then
        echo -ne "\nusage:\n"
        echo -ne "\t$ rm $poloAreponduOui\n"
        echo -ne "\t$ find . -name '?x*.avi' -exec ./rename.sh {} \;\n\n"
        exit 1
    fi
    
    # découpage (xxx - yyy.zzz)
    decoupage "$1" 1 debut
    decoupage "$1" 2 milieu1
    decoupage "$1" 3 fin
    
    # remplacer les espaces par des underscores
    milieu2=$(echo $milieu1 | sed -e 's/ /_/g')
    nouveauNom="${debut}-${milieu2}${fin}"
    
    # a present c'est plus que du blabla...
    echo -ne "mv\t'$1'\t'$nouveauNom'"
    
    if [ -f $poloAreponduOui ]
    then
        echo -ne "\n"
    else
        read -p "\t? (y/n/!) : [n] " response 
        case $response in
    	y|Y|yes|oui|svp|vasymongars)
    	    ;;
    	!|y!|yes!|toujours|alway|forever)
    	    touch $poloAreponduOui 
    	    ;;
    	*)
    	    exit 0
    	    ;;
        esac
    fi
    
    # tout ça pour ça
    mv "$1" "$nouveauNom"
    

  • $ man toto
    # vi toto.txt 
    # nroff toto.txt > /usr/share/man/man1/toto.1
    # man toto
    

  • menu.sh

  • lpbook2
    #!/bin/bash
    
    rm -fr tmppdf
    mkdir -p tmppdf
    cp book.pdf tmppdf/.
    cd tmppdf
    
    # compter les pages
    N=$(pdftk book.pdf dump_data | grep NumberOfPages | cut -d: -f2)
    
    # si besoin, ajouter une page pour avoir un nombre paire
    if [ $N -ne $[($N)/4*2] ]
    then
            pdftk A=book.pdf cat A1-end A1 output book2.pdf
            mv book2.pdf book.pdf
    fi
    
    # millieu du document
    N=$[($N+1)/2]
    
    # extraire les future pages:
    # recto: N / 1
    # verso: 2 / N-1
    pdftk A=book.pdf cat A1-${N}odd output out2.pdf
    pdftk A=book.pdf cat A1-${N}evenS output out4.pdf
    pdftk A=book.pdf cat Aend-$[N+1]even output out1.pdf
    pdftk A=book.pdf cat Aend-$[N+1]oddS output out3.pdf
    
    # éclater les 4 pdf ci-dessus => pages dans l'ordre alphabétique
    pdftk out1.pdf burst output %05d_out1.pdf
    pdftk out2.pdf burst output %05d_out2.pdf
    pdftk out3.pdf burst output %05d_out3.pdf
    pdftk out4.pdf burst output %05d_out4.pdf
    
    # fusioner toutes les pages obtenues ci-dessus
    pdftk 00*pdf cat output merge.pdf
    
    # A4 => 2xA5
    pdfnup --nup 2x1 merge.pdf --orient landscape --outfile miniBook.pdf
    
    cp miniBook.pdf ..
    

  • crypt/decrypt
    encrypt() {
            gpg -c $1 && rm $1
    }
    decrypt() {
            [ ${1%.gpg} != $1 ] || return
            gpg -d $1 > ${1%.gpg} 2>/dev/null && rm $1
    }
    

  • renomer un fichier sans les accents
    #!/bin/bash
    
    eAcute=$(echo "é" | iconv -f UTF-8 -t ISO-8859-1)
    eGrave=$(echo "è" | iconv -f UTF-8 -t ISO-8859-1)
    eChapo=$(echo "ê" | iconv -f UTF-8 -t ISO-8859-1)
    eTrema=$(echo "ë" | iconv -f UTF-8 -t ISO-8859-1)
    aGrave=$(echo "à" | iconv -f UTF-8 -t ISO-8859-1)
    aChapo=$(echo "â" | iconv -f UTF-8 -t ISO-8859-1)
    
    SRC="${eAcute}${eGrave}${eChapo}${eTrema}${aGrave}${aChapo} '\""
    DST="eeeeaa___"
    
    for f1 in $1/*; do
        # pour ne pas avoir de caractères codés sur plusieurs octets
        # (sinon `tr "é" "e"` remplace "é" par "ee")
        f2=$(echo $f1 | iconv -f UTF-8 -t ISO-8859-1)
    
        # remplacement des caractères spéciaux
        f3=$(echo $f2 | tr "$SRC" "$DST")
    
        # renomage
        echo mv \"$f1\" $f3
    done
    

  • générer un mot de pase pour /etc/shadow
    // cf man shadow
    // cf man crypt
    // gcc -Wall -o crypt crypt.c -lcrypt
    
    #define _XOPEN_SOURCE       /* See feature_test_macros(7) */
    
    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char** argv)
    {
    	char* salt = 0;
    	char* key = 0;
    
    	if (argc < 3) {
    		printf("usage: %s 'salt' 'passwd_en_clair'\n", argv[0]);
    		printf(" avec salt: '$[1-6]$...'\n");
    		return 1;
    	}
    	
    	salt = argv[1];
    	key =  argv[2];
    	
    	printf("salt='%s', clair='%s'\n", salt, key);
    	printf("crypte='%s'\n", crypt(key, salt));
    	
    	return 0;
    }
    

Home Up

This document is also available in PDF and PostScript format.



2018-10-11