Il est pratique de pouvoir désactiver l’historique du BASH. temporairement. Il vous suffit pour cela de taper la commande suivante :
unset HISTFILE
Il est pratique de pouvoir désactiver l’historique du BASH. temporairement. Il vous suffit pour cela de taper la commande suivante :
unset HISTFILE
EDIT – 13/05/2013 : v0.3 du script avec prise en compte des suggestions d’améliorations de David M + Trap
EDIT – 06/12/2012 : v0.2 du script avec prise en compte des commentaires de l’article
Un énième script de sauvegarde à plat de bases Mysql sur internet. Celui-ci crée un fichier texte (.sql) par base et compresse le tout ensuite.
J’utilise ce script depuis plus de 3 ans, ça tourne bien et surtout ça dépanne bien !
Attention : ce script est à coupler avec un système de sauvegarde complet et distant…
Il faut créer un utilisateur Mysql (appelé dump) avec des droits restreints en lecture sur toutes les bases :
$ mysql -u root -p -e "CREATE USER 'dump'@'localhost' IDENTIFIED BY 'LEMOTDEPASSE';" $ mysql -u root -p -e "GRANT SELECT , SHOW DATABASES , LOCK TABLES , SHOW VIEW ON * . * TO 'dump'@'localhost' IDENTIFIED BY 'LEMOTDEPASSE' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;"
Copier le contenu du script dans un fichier mysql_dump.sh puis faite un chmod +x mysql_dump.sh afin de le rendre exécutable. Ajouter ensuite ce script dans vos tâches crons pour qu’il s’exécute toutes les nuits (par exemple).
Note : les remarques sont les bienvenus…
#!/bin/bash
# Inspiré d'un script trouvé sur phpnews.fr (plus en ligne)
# Version 0.3 13/05/2013
# Script sous licence BEERWARE
set -eu
## Paramètres
USER='dump'
PASS='LEMOTDEPASSE'
# Répertoire de stockage des sauvegardes
DATADIR="/var/backups/mysql"
# Répertoire de travail (création/compression)
DATATMP=$DATADIR
# Nom du dump
DATANAME="dump_$(date +%d.%m.%y@%Hh%M)"
# Compression
COMPRESSIONCMD="tar -czf"
COMPRESSIONEXT=".tar.gz"
# Rétention / rotation des sauvegardes
RETENTION=30
# Exclure des bases
EXCLUSIONS='(information_schema|performance_schema|sys)'
# Email pour les erreurs (0 pour désactiver
EMAIL=0
# Log d'erreur
exec 2> ${DATATMP}/error.log
## Début du script
ionice -c3 -p$ &>/dev/null
renice -n 19 -p $ &>/dev/null
function cleanup {
if [ "`stat --format %s ${DATATMP}/error.log`" != "0" ] && [ "$EMAIL" != "0" ] ; then
cat ${DATATMP}/error.log | mail -s "Backup MySQL $DATANAME - Log error" ${EMAIL}
fi
}
trap cleanup EXIT
# On crée sur le disque un répertoire temporaire
mkdir -p ${DATATMP}/${DATANAME}
# On place dans un tableau le nom de toutes les bases de données du serveur
databases="$(mysql -u $USER -p$PASS -Bse 'show databases' | grep -v -E $EXCLUSIONS)"
# Pour chacune des bases de données trouvées ...
for database in ${databases[@]}
do
echo "dump : $database"
mysqldump -u $USER -p$PASS --quick --add-locks --lock-tables --extended-insert $database > ${DATATMP}/${DATANAME}/${database}.sql
done
# On tar tous
cd ${DATATMP}
${COMPRESSIONCMD} ${DATANAME}${COMPRESSIONEXT} ${DATANAME}/
chmod 600 ${DATANAME}${COMPRESSIONEXT}
# On le déplace dans le répertoire
if [ "$DATATMP" != "$DATADIR" ] ; then
mv ${DATANAME}${COMPRESSIONEXT} ${DATADIR}
fi
# Lien symbolique sur la dernier version
cd ${DATADIR}
set +eu
unlink last${COMPRESSIONEXT}
set -eu
ln ${DATANAME}${COMPRESSIONEXT} last${COMPRESSIONEXT}
# On supprime le répertoire temporaire
rm -rf ${DATATMP}/${DATANAME}
echo "Suppression des vieux backup : "
find ${DATADIR} -name "*${COMPRESSIONEXT}" -mtime +${RETENTION} -print -exec rm {} \;
Et voici l’antidote (la restauration)
#!/bin/bash
# Script sous licence BEERWARE
set -eu
## Paramètres mysql
USER='root'
PASS='xxxxxxxxxx'
# Répertoire de stockage des sauvegardes (contient des fichier *.sql )
DATADIR="/tmp/dump_11.10.19@02h02"
## Début du script
ionice -c3 -p$$ &>/dev/null
renice -n 19 -p $$ &>/dev/null
dbfiles=`find ${DATADIR} -name "*.sql"`
for dbfile in $dbfiles; do
db=`echo ${dbfile##*/} | cut -d'.' -f1`
echo "Restauration de la base : $db avec le fichier $dbfile"
mysql -u $USER -p$PASS $db < $dbfile
done
Le bash_aliases grossomodo c’est un fichier qui se trouve dans votre $HOME qui contient des raccourcis de commandes. C’est très pratique quand on passe beaucoup de temps dans sont terminal…
Je partage le mien qui n’est ni plus ni moins qu’une compile de ce qu’on peut trouver ici où là et deux trois petites choses maison dont je ne suis pas peu fier…
# Eliminer les commentaires d'un fichier
alias cgrep="grep -E -v '^(#|$|;)'"
alias nocomment='cgrep'
# Reviens à faire cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
function cpb() { cp $@{,.bak} ;}
# Crée une sauvegarde du fichier passé en paramètre, en rajoutant l'heure et la date
function bak() { cp "$1" "$1_`date +%Y-%m-%d_%H-%M-%S`" ; }
alias bak="bak"
alias back="bak"
# Êtres gentil avec les ressources de son système
function nicecool() {
if ! [ -z "$1" ]
then
# Prendre en paramètre un pid
ionice -c3 -p$1 ; renice -n 19 -p $1
else
# Si il n'y a pas de paramètre on nice le pid courant (le bash)
ionice -c3 -p$ ; renice -n 19 -p $
fi
}
alias niceprod="nicecool"
alias np="niceprod"
function extract() {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) rar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
alias extract="extract"
alias unall="extract"
# Bannir l'IP d'un méchant rapidement
function ban() {
if [ "`id -u`" == "0" ] ; then
iptables -A INPUT -s $1 -j DROP
else
sudo iptables -A INPUT -s $1 -j DROP
fi
}
alias ban="ban"
# Divers petits raccourcis :
alias q='exit'
alias maj='sudo aptitude update && sudo aptitude safe-upgrade'
alias c='clear'
alias rm='rm --interactive --verbose'
alias wget='wget -c'
alias mv='mv --interactive --verbose'
alias cp='cp --verbose'
alias grepr='grep -r'
alias grep='grep -i --color'
alias tree="find . | sed 's/[^/]*\//| /g;s/| *\([^| ]\)/+--- \1/'"
alias mkdir='mkdir -pv'
alias pg='ps aux | grep'
alias pl='ps faux | less'
#function mkcd () { mkdir $1 && cd $1 }
function mkcd() { mkdir -p "$@" && cd "$_"; }
alias mkcd="mkcd"
alias rotate-exif='jhead -autorot' # rotate-exif *.JPG
alias 1024="mogrify -resize 1024x1024 *.JPG"
# Sources :
# - http://root.abl.es/methods/1504/automatic-unzipuntar-using-correct-tool/
# - http://forum.ubuntu-fr.org/viewtopic.php?id=20437&p=3
Si aucun de ces raccourcis ne s’applique une fois que vous avez relancé votre terminal vérifier que vous avez une référence au .bash_aliases dans votre fichier ~/.bashrc
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Et si vous avez des alias que vous jugez indispensable n’hésitez pas à les posters en commentaire…
Pendant très longtemps j’ai chercher un site, un cours sur l’apprentissage du shell mais les moteurs de recherches ne me donnant pas pleine satisfaction, ayant toujours soif de plus plus plus de fonctionnalité, de savoir je commençais à désespérer.. jusqu’au jour ou je suis tomber par hasard sur le Guide avancé d’écriture des scripts Bash et la.. j’ai compris que le petit jésus existait… Donc si comme moi vous êtes une feignasse qui veut tous automatiser apprenez le shell
Évite d’installer un logiciel… petit truc pratique..
HOST=127.0.0.1 for((port=1;port<=65535;++port));do echo -en "$port ";if echo -en "open $HOST $port\nlogout\quit" | telnet 2>/dev/null | grep 'Connected to' > /dev/null;then echo -en "\n\nport $port/tcp is open\n\n";fi;done
htop : Un top mais en mieux (monitoring en temps réel coloré)
clamtk : Scanner les clés USB de vos utilisateurs Windows Clamtk
grep -E -v '^(#|$)' fic.conf : Décommenter un fichier de conf
trickle : Limite la bande passante d’une application!
cp /etc/apache2/apache2.conf{,.bak} Reviens a faire cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
tsocks : Faire passer le flux réseau dans un proxy socks netcat :
nc pour faire du client / serveur en bash
La commande “tput” permet de gérer l’adressage du curseur et les séquences de contrôle du terminal. Vous pourrez notamment faire une mise en page d’un script interactif
#### Initialisation des variables ####
#+ Mode normal
RESETCOLOR="$(tput sgr0)"
# "Surligné" (bold)
SURLIGNE=$(tput smso)
# "Non-Surligné" (offbold)
NONSURLIGNE=$(tput rmso)
# Couleurs (gras)
#+ Rouge
ROUGE="$(tput bold ; tput setaf 1)"
#+ Vert
VERT="$(tput bold ; tput setaf 2)"
#+ Jaune
JAUNE="$(tput bold ; tput setaf 3)"
#+ Bleu
BLEU="$(tput bold ; tput setaf 4)"
#+ Cyan
CYAN="$(tput bold ; tput setaf 6)"
#### Fin initialisation variables ####
# Effacement du terminal
clear
# Adressage du curseur ligne 0 colonne 2
tput cup 0 2
echo "Entrez les informations demandées dans le champ ayant le curseur."
# Adressage du curseur ligne 1 colonne 2
tput cup 1 2
echo "Appuyez sur Entrée pour passer au champ suivant."
# Adressage du curseur ligne 3 colonne 20
tput cup 3 30
echo "${SURLIGNE}Questions/Réponses${NONSURLIGNE}"
# Pré-affichage des champs
tput cup 5 5
echo -e "Nom : \c"
tput cup 7 5
echo -e "Prénom : \c"
tput cup 9 5
echo -e "Age : \c"
# Facultatif
# Pré-affichage des données
tput cup 12 2
echo -e "Votre nom est : "
tput cup 13 2
echo -e "Votre prénom est : "
tput cup 14 2
echo -e "Vous avez ans. "
#### Interaction du script ####
# Adressage du curseur ligne 5 colonne 5
tput cup 5 5
echo -e "Nom : \c"
read nom
# Adressage du curseur ligne 7 colonne 5
tput cup 7 5
echo -e "Prénom : \c"
read prenom
# Adressage du curseur ligne 9 colonne 5
tput cup 9 5
echo -e "Age : \c"
read age
#### Affichage des réponses ####
# Adressage du curseur ligne 12 colonne 2
tput cup 12 2
echo -e "${VERT}Votre nom est : ${RESETCOLOR}"${ROUGE}$nom${RESETCOLOR}
# Adressage du curseur ligne 13 colonne 2
tput cup 13 2
echo -e "${VERT}Votre prénom est : ${RESETCOLOR}"${CYAN}$prenom${RESETCOLOR}
# Adressage du curseur ligne 14 colonne 2
tput cup 14 2
echo -e "${VERT}Vous avez ${JAUNE}$age ${VERT}ans. ${RESETCOLOR}"
# Adressage du curseur ligne 20 colonne 0
tput cup 20 0
En continuant à utiliser le site, vous acceptez l’utilisation des cookies (au chocolat) Plus d’informations
Les cookies sont utilisés à des fin de statistique de visite du blog sur une plateforme indépendante que j'héberge moi même. Les statistiques sot faites avec un logiciel libre. Aucune information n'est redistribué à google ou autre. Je suis seul autorisé à lire ces informations