Category Archives: Uncategorized

ntpdate rdate via http

Fatigué de ramer sur la mise en place de ntp, ntpd, port 123, et le message already used, trouver ntpdate -u, et voir qu’on ne trouve toujours pas les pool.ntp.org, et se dire que tout le monde est à l’heure sauf sa machine, et qu’on n’a que le http comme protocole, et qu’avec le http on a toujours l’heure dans le header, et que pourquoi qu’on n’utiliserait pas cette heure pour mettre à jour, hein ?

curl -X HEAD -s -i http://fr.pool.ntp.org|grep Date|sed -e 's/^Date:/--set="/' -e 's/$/"/'|xargs date

Pocket

Fini les accents dans les URLs

Ouais, je sais, je devrais faire un “=”.urlencoding($val) à chaque fois mais bon hein, ça passe toujours. Non? 

Tomcat 8.5 et tomcat 9 (tomcat 8.0 aurait dû marcher mais pas chez moi) ça y est, ils n’acceptent plus d’accents dans les urls query_string. à peine s’ils acceptent les ([{|}]).

Utilisons l’apache en frontal pour transformer les accents reçus dans les URLs en leur équivalent %XX. Bonne idée au départ, mais je n’ai pas réussi à modifier la query string en lua. ça aurait été cool. Donc suivant la méthodologie QAD (euh.. quick and dirty …), voici la centaine de RewriteRule nécessaires : 


#used by : Include conf/rewriteacc.inc
echo "# UGLY : transcode real iso-8859-1 chars to %XX URL encoding " > /etc/httpd/conf/rewriteacc.inc
for L in a b c d e f;do
for C in 0 1 2 3 4 5 6 7 8 9 a b c d e f;do
X=$L$C
cat <<EOT>>/etc/httpd/conf/rewriteacc.inc
RewriteCond %{QUERY_STRING} ^(.*)\x$X(.*)$
RewriteRule ^(.*)\$ \$1?%1%$X%2 [N]
EOT
done
done
for X in 22 3c 3e 5b 5b 5c 5d 5e 7b 7c 7d 7e;do
cat <<EOT>>/etc/httpd/conf/rewriteacc.inc
RewriteCond %{QUERY_STRING} ^(.*)\x$X(.*)$
RewriteRule ^(.*)\$ \$1?%1%$X%2 [N]
EOT
done
cat <<EOT>>/etc/httpd/conf/rewriteacc.inc
RewriteRule ^(.*)\$ - [PT]
EOT

 

Je n’ose même pas commenter ces lignes. juste qu’il y a un proxypass derrière, d’où la bidouille du [PT] en fin de rewrites

Il y a des scripts quantiques schroedingeriens simultanément dans des états superposés de fierté et de honte.

Pocket

Découpage de mbox, la vie des petits scripts

Nouveau serveur de mail, dilemne sur le choix du format de stockage, par fichier ou par boite, maildir ou mbox. Bon ok j’aurais du choisir maildir. Car maintenant je dois découper des très gros mbox qui ralentissent un peu les clients de mail.

j’ai retrouvé ce bout de perl mboxsplit.pl

my $part="off";
my $h=0;
while (<>) {
 my $l=$_;
 chomp;
 $part="arc" if (/^From MAILER.DAEMON/);
 $part="sent" if (/^From [a-z]*\@ledomaine.fr/);
  if ($part ne "off") {
  $c++;
  my $d=$_;
# From MAILER-DAEMON  Mon Feb 12 01:16:39 2018
  $d=~s/^From [^ ]* *[A-Za-z][A-Za-z][A-Za-z] //;
  $d=~s/\d\d \d\d:\d\d:\d\d //;
  $d=~s/ /_/g;
  if ($c > $m ) {
   close($h) unless ($h==0);
   $c=0;
   open($h,">".$part."_".$d);
  }
  $part="off";
 }
 print $h $l;
}
close($h);

on va manuellement trouver de gros mbox (inbox ou Sent généralement) et on tape

cat inbox|perl mboxsplit.pl

ce qui découpe le mbox en morceaux pas trop gros et pas trop petits, et les nommant pas trop mal arc_MMM_YYYY .

 

C’est intéressant la vie de tous ces bouts de codes qu’on n’utilisera qu’une ou deux fois, mais dont on est assez fiers de leur flexibilité.

Je pense à

une rotation de fichier

if [ -f $N ];then cp $N $N.0;fi
for i in 8 7 6 5 4 3 2 1 0;do
 if [ -f "$N.$i" ];then cp $N.$i $N.$(expr 1 + $i);fi
done

 

ou à une détection de connexion et d’envoi smtp douteuse, avec renvoi d’un ratio, pour zabbix

T=5000
L=$(tail -$T /var/log/maillog|wc -l)
P=0
if [ $L -gt 100 ];then
M=$(tail -$T /var/log/maillog|grep -c "ALLOWED .* origin_rdns: (unknown) auth: [a-z]")
P=$(expr $M \* 1000 / $L)
fi
echo $P

 

à tous ces codes qu’on se rappelle vaguement avoir fait, et qu’on n’arrive jamais à retrouver quand on en a besoin. En réalité, ils nous servent à savoir qu’on peut les refaire, très vite et mieux.

Pocket

repackage solaris

un peu de code pour ouvrir un package solaris, y modifier des trucs, et le repackager.

#!/bin/sh
UNTRUC=":/home/"
UNAUTRE=":/export/home/"
P=$1
Q=`echo $P|sed -e 's/\.SunOS/SC.SunOS/'`
if [ ! -f "$P" ];then echo "$0 package";exit;fi
mkdir -p tmp/
rm -rf tmp/*
cd tmp
pkgtrans ../$P . all
D=`ls -d *`
cd $D
for F in $(ls install/*);do
if [ "`grep -c $UNTRUC $F`" != "0" ];then
cp $F $F.tmp
cat $F.tmp|sed -e "s|$UNTRUC|$UNAUTRE|" > $F
rm $F.tmp
G=`basename $F`
L=`wc -c $F|sed -e 's/^ *//' -e 's/ .*$//'`
S=`sum $F|sed -e 's/ .*$//'`
cp pkgmap pkgmap.tmp
cat pkgmap.tmp|sed -e "s/^1 i $G [0-9]* [0-9]* /1 i $G $L $S /" > pkgmap
rm pkgmap.tmp
fi
done
cd ..
pkgtrans -s . ../$Q all
cd ..
rm -rf tmp/*

 

en bref, lire la doc de pkgtrans, et recalculer les longueurs et checksums …

un jour comme un autre

 

Pocket