lundi 6 octobre 2014

SCRIPT SHELL – RELANCE AUTOMATIQUE DE SERVICE

Relance automatique de service

Un des problèmes majeurs pour un administrateur système est le fait de devoir se connecter à son serveur uniquement pour relancer un service qui s’est arrêté. Certes, il est possible de mettre un cronjob qui le relance chaque minute, mais si le besoin est moins d’une minute. Ci-dessous,  un petit script shell qui s’en occupe toute les 5 secondes.
Donc on commence avec la déclaration qu’il s’agit d’un script shell:
#!/bin/sh
Ensuite, on déclare une petite fonction renvoi le pid du notre process sinon 0 si le process n’est pas lancé:
pid() {
if [ -n "`ps uax | grep nom_process |grep -v 'grep\|etc'|tr -s ' '|cut -d' ' -f2|head -n 1`" ]; then
echo -n 1
return
fi
echo -n 0
}
Et on termine avec une « boucle infinie » qui vérifie si le service est lancé sinon elle le relance et écrit dans deux fichiers logs avec la date:
while [ 1 ]

do

if [ "`pid`" != "0" ]; then
echo `date "+%d/%m/%y %T nom_process est en cours d'exécution ... rien à faire."` >>/var/log/nom_process.chk
else
echo `date "+%d/%m/%y %T nom_process s'est arrêté ^_^ Redémarrage  ..." >>/var/log/nom_process_restart.log`
/usr/local/bin/nom_process
fi
sleep 5
done
Bien sûr, il ne faut pas oublier de rajouter les éventuels paramètres du service dans votre script shell. Aussi, pensez à vérifier la taille des fichiers log de temps à autre pour éviter que ça prenne trop d’espace disque.
Le format de la date utilisé ici est jj/mm/aaaa. Vous pouvez changer la disposition en changeant l’ordre des %d, %m et %y.  %T indique que le texte à afficher après la date.
Vous mettez le script avec les droits chmod 755 et vous le lancer en arrière plan avec « & » : ‘./script &’

Le script shell entier:


#!/bin/sh

pid() {
if [ -n "`ps uax | grep oscam |grep -v 'grep\|etc'|tr -s ' '|cut -d' ' -f2|head -n 1`" ]; then
echo -n 1
return
fi
echo -n 0
}

while [ 1 ]

do

if [ "`pid`" != "0" ]; then
echo `date "+%d/%m/%y %T Oscam is running, nothing to do."` >>/var/log/oscam.chk
else
echo `date "+%d/%m/%y %T Oscam hanged ^_^ Restarting process ..." >>/var/log/oscam_restart.log`
/usr/local/bin/oscam -b
fi
sleep 5
done

SCRIPT SHELL – TRADUCTION GOOGLE

Traduction google

Depuis que google a rendu son api de traduction « Google translator » payante, la majorité des script proposés ne fonctionnent plus. Ne cherchez pas à obtenir un résultat avec ce script par exemple:
#!/bin/bash

if [ $# == 3 ]
then
echo "From: $1 To: $2"
lynx -dump "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$3&langpair=$1|$2"|awk -F'"' '{print $6}'

else
lynx -dump "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=|ar"|awk -F'"' '{print "From: "$10" To: ar \n"$6}';echo

lynx -dump "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=$1&langpair=|en"|awk -F'"' '{print "From: "$10" To: en \n"$6}';echo

fi
Ce script présente en effet 2 défaut:
  • Il est basé sur Google apis qui est devenue payante
  • Il a besoin du navigateur texte lynx pour fonctionner, ce qui n’est pas toujours pré-installé …
  • Ce que je propose c’est une solution beaucoup plus simple. On va tout d’abord utiliser wget qui est là par défaut sur toutes les distributions linux même les plus allégées. ensuite, le script doit pouvoir fonctionner en 2 modes uniquement, pas besoin de préciser la langue en effet pour que le traducteur de google puisse faire son travail. Donc on aura les 2 mode suivant:
  • Un mode à 2 paramètres pour préciser la langue de destination du texte, genre ./script fr "Texte à traduire".
  • Un mode où on a juste besoin de préciser le texte à traduire et prendre le paramètre par défaut dans le script default pour la langue de destination: ./script "Texte à traduire"
  • Le script

    #!/bin/sh
    default='fr'
    if [ $# == 1 ]
    then
    echo "langue de destination: $default"
    wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$1&sl=auto&tl=$default" | sed 's/\[\[\[\"//' | cut -d \" -f 1
    fi
    if [ $# == 2 ]
    then
    wget -U "Mozilla/5.0" -qO - "http://translate.google.com/translate_a/t?client=t&text=$2&sl=auto&tl=$1" | sed 's/\[\[\[\"//' | cut -d \" -f 1
    fi
    Pour la langue de destination par défaut, il suffit de changer la valeur de la variable default dans le script et le tour est joué. Il est à noter que le code de la langue doit être au format ISO 639-1 disponible un peu partout sur le net.
    Exemples:
  • Français: fr
  • Arabe: ar
  • Anglais: en
  • Italien: it
  • SHELL LINUX – WHOIS POUR LES NOUVEAUX TLDS

    logo iana

    Introduction

    Depuis quelques années, on a vu émerger de nouveaux noms de domaines de top niveau: top level domains ou TLDs. On voit désormais des noms de domaine géographiques en .paris.nyc etc.. Mais aussi d’autres générique type .download.sex.help etc… Ou encore des TLDs privés appartenant à des marques comme les.amazon.ferrari.sony …etc. Il y a même des TLDs en caractères non latin pour répondre à la demande des pays asiatiques, Russie, Inde … Vous pouvez aller sur le site de l’iana.

    whois.conf

    Oui mais voilà, Un administrateur système ne va pas chercher unwhois sur le net. On a plus l’habitude de taper en console ou d’intégrer dans un script. Pour cela, il va falloir éditer ou créer le cas échéant le fichier /etc/whois.conf pour y ajouter les nouveaux TLDs et pouvoir ainsi rechercher leurs whois en console. Donc, on ajoute au fichier /etc/whois.conf les lignes suivantes:
    ## 
    # WHOIS servers for new TLDs (http://www.iana.org/domains/root/db)
    ##
     
    \.academy$ whois.donuts.co
    \.actor$ whois.unitedtld.com
    \.agency$ whois.donuts.co
    \.bar$ whois.nic.bar
    \.bargains$ whois.donuts.co
    \.berlin$ whois.nic.berlin
    \.best$ whois.nic.best
    \.bid$ whois.nic.bid
    \.bike$ whois.donuts.co
    \.blue$ whois.afilias.net
    \.boutique$ whois.donuts.co
    \.build$ whois.nic.build
    \.builders$ whois.donuts.co
    \.buzz$ whois.nic.buzz
    \.cab$ whois.donuts.co
    \.camera$ whois.donuts.co
    \.camp$ whois.donuts.co
    \.cards$ whois.donuts.co
    \.careers$ whois.donuts.co
    \.catering$ whois.donuts.co
    \.center$ whois.donuts.co
    \.ceo$ whois.nic.ceo
    \.cheap$ whois.donuts.co
    \.christmas$ whois.uniregistry.net
    \.cleaning$ whois.donuts.co
    \.clothing$ whois.donuts.co
    \.club$ whois.nic.club
    \.codes$ whois.donuts.co
    \.coffee$ whois.donuts.co
    \.cologne$ whois-fe1.pdt.cologne.tango.knipp.de
    \.community$ whois.donuts.co
    \.company$ whois.donuts.co
    \.computer$ whois.donuts.co
    \.construction$ whois.donuts.co
    \.contractors$ whois.donuts.co
    \.cool$ whois.donuts.co
    \.cruises$ whois.donuts.co
    \.dance$ whois.unitedtld.com
    \.dating$ whois.donuts.co
    \.democrat$ whois.unitedtld.com
    \.diamonds$ whois.donuts.co
    \.directory$ whois.donuts.co
    \.domains$ whois.donuts.co
    \.education$ whois.donuts.co
    \.email$ whois.donuts.co
    \.enterprises$ whois.donuts.co
    \.equipment$ whois.donuts.co
    \.estate$ whois.donuts.co
    \.events$ whois.donuts.co
    \.expert$ whois.donuts.co
    \.exposed$ whois.donuts.co
    \.farm$ whois.donuts.co
    \.fish$ whois.donuts.co
    \.flights$ whois.donuts.co
    \.florist$ whois.donuts.co
    \.foundation$ whois.donuts.co
    \.futbol$ whois.unitedtld.com
    \.gallery$ whois.donuts.co
    \.gift$ whois.uniregistry.net
    \.glass$ whois.donuts.co
    \.graphics$ whois.donuts.co
    \.guitars$ whois.uniregistry.net
    \.guru$ whois.donuts.co
    \.holdings$ whois.donuts.co
    \.holiday$ whois.donuts.co
    \.house$ whois.donuts.co
    \.immobilien$ whois.unitedtld.com
    \.industries$ whois.donuts.co
    \.institute$ whois.donuts.co
    \.international$ whois.donuts.co
    \.jetzt$ whois.nic.jetzt
    \.jobs$ jobswhois.verisign-grs.com
    \.kaufen$ whois.unitedtld.com
    \.kim$ whois.afilias.net
    \.kitchen$ whois.donuts.co
    \.kiwi$ whois.dot-kiwi.com
    \.koeln$ whois-fe1.pdt.koeln.tango.knipp.de
    \.kred$ whois.nic.kred
    \.land$ whois.donuts.co
    \.lighting$ whois.donuts.co
    \.limo$ whois.donuts.co
    \.link$ whois.uniregistry.net
    \.london$ whois-lon.mm-registry.com
    \.luxury$ whois.nic.luxury
    \.management$ whois.donuts.co
    \.mango$ whois.mango.coreregistry.net
    \.marketing$ whois.donuts.co
    \.menu$ whois.nic.menu
    \.moda$ whois.unitedtld.com
    \.monash$ whois.nic.monash
    \.nagoya$ whois.gmoregistry.net
    \.ninja$ whois.unitedtld.com
    \.nyc$ whois.nic.nyc
    \.okinawa$ whois.gmoregistry.ne
    \.partners$ whois.donuts.co
    \.parts$ whois.donuts.co
    \.photo$ whois.uniregistry.net
    \.photography$ whois.donuts.co
    \.photos$ whois.donuts.co
    \.pics$ whois.uniregistry.net
    \.pink$ whois.afilias.net
    \.plumbing$ whois.donuts.co
    \.productions$ whois.donuts.co
    \.properties$ whois.donuts.co
    \.pub$ whois.unitedtld.com
    \.qpon$ whois.nic.qpon
    \.recipes$ whois.donuts.co
    \.red$ whois.nic.red
    \.rentals$ whois.donuts.co
    \.repair$ whois.donuts.co
    \.report$ whois.donuts.co
    \.reviews$ whois.unitedtld.com
    \.rich$ whois.afilias-srs.net
    \.ruhr$ whois.nic.ruhr
    \.sexy$ whois.uniregistry.net
    \.shiksha$ whois.nic.shiksha
    \.shoes$ whois.donuts.co
    \.singles$ whois.donuts.co
    \.social$ whois.unitedtld.com
    \.sohu$ whois.gtld.knet.cn
    \.solar$ whois.donuts.co
    \.solutions$ whois.donuts.co
    \.supplies$ whois.donuts.co
    \.supply$ whois.donuts.co
    \.support$ whois.donuts.co
    \.systems$ whois.donuts.co
    \.tattoo$ whois.uniregistry.net
    \.technology$ whois.donuts.co
    \.tienda$ whois.donuts.co
    \.tips$ whois.donuts.co
    \.today$ whois.donuts.co
    \.tokyo$ whois.nic.tokyo
    \.tools$ whois.donuts.co
    \.trade$ whois.nic.trade
    \.training$ whois.donuts.co
    \.uno$ whois.nic.uno
    \.vacations$ whois.donuts.co
    \.ventures$ whois.donuts.co
    \.viajes$ whois.donuts.co
    \.villas$ whois.donuts.co
    \.vision$ whois.donuts.co
    \.vote$ whois.afilias.net
    \.voting$ whois.nic.voting
    \.voto$ whois.afilias.net
    \.voyage$ whois.donuts.co
    \.wang$ whois.gtld.knet.cn
    \.watch$ whois.donuts.co
    \.webcam$ whois.nic.webcam
    \.wed$ whois.nic.wed
    \.wien$ whois.nic.wien
    \.wiki$ whois.nic.wiki
    \.works$ whois.donuts.co
    \.xn--3bst00m$ whois.gtld.knet.cn
    \.xn--3ds443g$ whois.afilias-srs.net
    \.xn--55qw42g$ whois.conac.cn
    \.xn--55qx5d$ whois.ngtld.cn
    \.xn--6frz82g$ whois.afilias.net
    \.xn--6qq986b3xl$ whois.gtld.knet.cn
    \.xn--80asehdb$ whois.online.rs.corenic.net
    \.xn--80aswg$ whois.site.rs.corenic.net
    \.xn--c1avg$ whois.publicinterestregistry.net
    \.xn--cg4bki$ whois.kr
    \.xn--d1acj3b$ whois.nic.xn--d1acj3b
    \.xn--fiq228c5hs$ whois.afilias-srs.net
    \.xn--fiq64b$ whois.gtld.knet.cn
    \.xn--i1b6b1a6a2e$ whois.publicinterestregistry.net
    \.xn--io0a7i$ whois.ngtld.cn
    \.xn--mgbab2bd$ whois.bazaar.coreregistry.net
    \.xn--ngbc5azd$ whois.nic.xn--ngbc5azd
    \.xn--nqv7f$ whois.publicinterestregistry.net
    \.xn--nqv7fs00ema$ whois.publicinterestregistry.net
    \.xn--q9jyb4c$ domain-registry-whois.l.google.com
    \.xn--rhqv96g$ whois.nic.xn--rhqv96g
    \.xn--unup4y$ whois.donuts.co
    \.xn--zfr164b$ whois.conac.cn
    \.xyz$ whois.nic.xyz
    \.zone$ whois.donuts.co
    source: www.microkontrol.com