IT
Alternatives system to switch Firefox
Pour mes tests Selenium, j’ai besoin de pouvoir utiliser une version de Firefox qui ne soit pas la dernière. J’ai donc été confrontée au problème suivant : il y a-t-il une commande simple comme alternatives pour passer d’une installation de Firefox à une autre, comme c’est par exemple possible pour java ? La réponse est oui ! Tout d’abord, on télécharge la version de Firefox qui nous intéresse :
# mkdir -p /opt/firefox # wget https://ftp.mozilla.org/pub/firefox/releases/46.0.1/firefox-46.0.1.linux-x86_64.sdk.tar.bz2 # tar -xvf firefox-46.0.1.linux-x86_64.sdk.tar.bz2 # mv firefox-sdk/ firefox-46.0.1
Ensuite, on configure la version par défaut et la version custom dans alternatives :
# alternatives --install /usr/local/bin/firefox firefox /usr/bin/firefox 10 # alternatives --install /usr/local/bin/firefox firefox /opt/firefox/firefox-46.0.1/bin/firefox 20 # alternatives --config firefox There are 2 programs which provide 'firefox'. Selection Command ----------------------------------------------- 1 /usr/bin/firefox + 2 /opt/firefox/firefox-46.0.1/bin/firefox Enter to keep the current selection[+], or type selection number:
Si pour une raison quelconque, on veut retourner à l’état antérieur, il suffira de supprimer les installations de alternatives :
# /usr/sbin/alternatives --remove firefox /opt/firefox/firefox # /usr/sbin/alternatives --remove firefox /usr/bin/firefox
Script d'init pour Murmur
Un petit script à mettre dans init.d pour pouvoir lancer Murmur comme un service :### BEGIN INIT INFO # Provides: murmur # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Short description: Start/Stop Murmur, the voice chat server ### END INIT INFO # chkconfig: 2345 55 25 pidfile=/var/run/murmur/murmur.pid pid=`/bin/cat /var/run/murmur/murmur.pid` case "$1" in start) if [ ! "$pid" ]; then /bin/echo "Starting Murmur ... " /opt/mumble/murmur.x86 fi exit 0 ;; stop) if [ "$pid" ]; then /bin/echo "Shutting down Murmur ... " /bin/kill -9 $pid :> $pidfile fi exit 0 ;; status) /bin/echo -n "Murmur is " if [ "$pid" ]; then /bin/echo "running." exit 0 else /bin/echo "not running!" exit 1 fi ;; restart|reload|force-reload) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|status|restart|reload|force-reload}" >&2 exit 1 ;; esac
Script Pandoc de conversion Markdown vers PDF
Script pour convertir un fichier Markdown en fichier PDF, avec table des matières
#!/bin/bash if [ $# -lt 2 ]; then echo "Syntax: $0" exit -1 fi markdown="$1" pdf="$2" pandoc ${markdown} --variable=author:"Aline" --variable=date:"$(date +%d-%m-%Y)" -N --toc -o ${pdf}
Avec le template Latex par defaut default.latex modifié :
%\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$lang$,$endif$$if(papersize)$$papersize$,$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$} \documentclass[12pt]{$documentclass$} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{amssymb,amsmath} \usepackage{ifxetex,ifluatex} \usepackage{fixltx2e} % provides \textsubscript \usepackage{geometry} %Aline:marges \geometry{verbose,a4paper,tmargin=2.5cm,bmargin=2.5cm,lmargin=2.2cm,rmargin=2.2cm} %aline :style pour que le code soit encadre et colore % % Define new command 'verbatim" which is used to hold the code of any language. % \usepackage{fancyvrb,fancybox,calc} \usepackage[svgnames]{xcolor} \usepackage[style=1,leftmargin=0pt,rightmargin=0pt]{mdframed} %\definecolor{verb_border}{rgb}{0.7,0.7,1} %\definecolor{verb_bg}{rgb}{.95,.96,.97} \let\oldverbatim=\verbatim \let\oldendverbatim=\endverbatim \renewenvironment{verbatim}[1][test] { \begin{mdframed}[linewidth=2,backgroundcolor=gray!10,linecolor=gray, fontcolor=black]\fontsize{10}{10}\sffamily\selectfont \begin{oldverbatim} } { \end{oldverbatim} \end{mdframed} } %fin aline % use upquote if available, for straight quotes in verbatim environments \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex \usepackage[utf8]{inputenc} $if(euro)$ \usepackage{eurosym} $endif$ \else % if luatex or xelatex \ifxetex \usepackage{mathspec} \usepackage{xltxtra,xunicode} \else \usepackage{fontspec} \fi \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} \newcommand{\euro}{€} $if(mainfont)$ \setmainfont{$mainfont$} $endif$ $if(sansfont)$ \setsansfont{$sansfont$} $endif$ $if(monofont)$ \setmonofont[Mapping=tex-ansi]{$monofont$} $endif$ $if(mathfont)$ \setmathfont(Digits,Latin,Greek){$mathfont$} $endif$ \fi % use microtype if available \IfFileExists{microtype.sty}{\usepackage{microtype}}{} $if(geometry)$ \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} $endif$ $if(natbib)$ \usepackage{natbib} \bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} $endif$ $if(biblatex)$ \usepackage{biblatex} $if(biblio-files)$ \bibliography{$biblio-files$} $endif$ $endif$ $if(listings)$ \usepackage{listings} $endif$ $if(lhs)$ \lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} $endif$ $if(highlighting-macros)$ $highlighting-macros$ $endif$ $if(verbatim-in-note)$ \usepackage{fancyvrb} $endif$ $if(tables)$ \usepackage{longtable,booktabs} $endif$ $if(graphics)$ \usepackage{graphicx} % Redefine \includegraphics so that, unless explicit options are % given, the image width will not exceed the width of the page. % Images get their normal width if they fit onto the page, but % are scaled down if they would overflow the margins. \makeatletter \def\ScaleIfNeeded{% \ifdim\Gin@nat@width>\linewidth \linewidth \else \Gin@nat@width \fi } \makeatother \let\Oldincludegraphics\includegraphics {% \catcode`\@=11\relax% \gdef\includegraphics{\@ifnextchar[{\Oldincludegraphics}{\Oldincludegraphics[width=\ScaleIfNeeded]}}% }% $endif$ \ifxetex \usepackage[setpagesize=false, % page size defined by xetex unicode=false, % unicode breaks when used with xetex xetex]{hyperref} \else \usepackage[unicode=true]{hyperref} \fi \hypersetup{breaklinks=true, bookmarks=true, pdfauthor={$author-meta$}, pdftitle={$title-meta$}, colorlinks=true, citecolor=$if(citecolor)$$citecolor$$else$blue$endif$, urlcolor=$if(urlcolor)$$urlcolor$$else$blue$endif$, linkcolor=$if(linkcolor)$$linkcolor$$else$magenta$endif$, pdfborder={0 0 0}} \urlstyle{same} % don't use monospace font for urls $if(links-as-notes)$ % Make links footnotes instead of hotlinks: \renewcommand{\href}[2]{#2\footnote{\url{#1}}} $endif$ $if(strikeout)$ \usepackage[normalem]{ulem} % avoid problems with \sout in headers with hyperref: \pdfstringdefDisableCommands{\renewcommand{\sout}{}} $endif$ \setlength{\parindent}{0pt} \setlength{\parskip}{6pt plus 2pt minus 1pt} \setlength{\emergencystretch}{3em} % prevent overfull lines $if(numbersections)$ \setcounter{secnumdepth}{5} $else$ \setcounter{secnumdepth}{0} $endif$ $if(verbatim-in-note)$ \VerbatimFootnotes % allows verbatim text in footnotes $endif$ $if(lang)$ \ifxetex \usepackage{polyglossia} \setmainlanguage{$mainlang$} \else \usepackage[$lang$]{babel} \fi $endif$ $if(title)$ \title{$title$} $endif$ $if(subtitle)$ \subtitle{$subtitle$} $endif$ \author{$for(author)$$author$$sep$ \and $endfor$} \date{$date$} $for(header-includes)$ $header-includes$ $endfor$ \begin{document} $if(title)$ \maketitle $endif$ $if(abstract)$ \begin{abstract} $abstract$ \end{abstract} $endif$ $for(include-before)$ $include-before$ $endfor$ $if(toc)$ { \hypersetup{linkcolor=black} \setcounter{tocdepth}{$toc-depth$} \clearpage \tableofcontents \clearpage } $endif$ $body$ $if(natbib)$ $if(biblio-files)$ $if(biblio-title)$ $if(book-class)$ \renewcommand\bibname{$biblio-title$} $else$ \renewcommand\refname{$biblio-title$} $endif$ $endif$ \bibliography{$biblio-files$} $endif$ $endif$ $if(biblatex)$ \printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ $endif$ $for(include-after)$ $include-after$ $endfor$ \end{document}
Script tueur de zombies
#!/bin/bash display_usage() { echo "This script search for zombie process and kill their parents" } display_usage ZOMBIES=$(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }') if test -n "${ZOMBIES}" then echo "Zombies found : ${ZOMBIES}" echo "Do you want to kill the zombies ?" select yn in "Yes" "No"; do case $yn in Yes ) for ZOMBIE in ${ZOMBIES}; do echo "Killing ${ZOMBIE}" kill -9 ${ZOMBIE} done break;; No ) break;; esac done fi
Rendre Logwatch moins verbeux
Logwatch est un outil facile à mettre en place et efficace pour surveiller les logs système. Par contre, par défaut il envoie des emails tous les jours, et est assez verbeux. Pour être moins spammée, j’avais déjà paramétré dans dans /etc/logwatch/conf/logwatch.conf un envoi hebdo, et désactivé la surveillance des logs NTPD :
Service = "-XNTPD" Range ="between -7 days and -1 days"
Mais je recevais tout de même chaque semaine des mails de plus de 500 lignes, plein d’erreurs http, avec la liste des pages en erreur 404, par exemple. Et également la liste de toutes les IP ayant tenté de se connecter en ssh. Afin de le rendre moins verbeux, on peut déjà demander à n’avoir qu’un résumé des erreurs http. On a alors un total, par exemple:
Requests with error response codes 400 Bad Request SUMMARY - 8 URLs, total: 28 Time(s)
Pour cela, il faut créer le fichier /etc/logwatch/conf/services/http.conf, avec le contenu :
# Always show only summary for reply codes # Bad Request $http_rc_detail_rep-400 = 20 # Unauthorized $http_rc_detail_rep-401 = 20 # Forbidden $http_rc_detail_rep-403 = 20 # Not Found $http_rc_detail_rep-404 = 20 # Method Not Allowed $http_rc_detail_rep-405 = 20 # Internal Server Error $http_rc_detail_rep-500 = 20 # Service Unavailable $http_rc_detail_rep-503 = 20
Pour la section ssh, c’est moins facile, il n’existe pas de variable prédéfinie, il faut passer par des regexp. Je n’ai pas supprimé toutes les lignes contenant des IP afin de ne pas vider complètement la section “Users logging in through sshd”, mais j’ai réduit les sections contenant toutes les erreurs ssh et PAM en ajoutant dans /etc/logwatch/conf/ignore.conf :
###### REGULAR EXPRESSIONS IN THIS FILE WILL BE TRIMMED FROM REPORT OUTPUT ##### # remove the lines like "5.39.218.148: 3 times" from the sshd section \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\s\d+\stime # remove the lines like "unknown (p1.plasa.com): 136 Time(s)" # from the ssh authentication failures \(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\):\s\d+\sTime # remove the PAM lines PAM reverse mapping
Je passe ainsi pour le logwatch de la même semaine de 465 lignes à 253, ce qui augmente beaucoup la lisibilité.