Tag Archives: tips

Array ruby tricks

J’en ai parlé lors de ma session aux MS Techdays.

On vous donne 2 fichiers :

  • Le fichier avec les UUID à enlever
  • Le fichier avec tous les UUID

Le chalenge, ne garder que les UUID absent :p

Les armes :

  • Ruby
  • Ben… c’est tout

Read more »

Travailler avec une mib snmp

Par exemple pour travailler avec une mib netapp :

snmptranslate -m NETWORK-APPLIANCE-MIB -Tl|less

Pour avoir la liste de tous les paramètres avec leurs “valeurs” :

.iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).interfaces(2).ifTable(2).ifEntry(1).ifOutErrors(20)
.iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).interfaces(2).ifTable(2).ifEntry(1).ifOutQLen(21)
.iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).interfaces(2).ifTable(2).ifEntry(1).ifSpecific(22)

Pour traduire ça avec une petite ligne :

echo '.iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).interfaces(2).ifTable(2).ifEntry(1).ifSpecific(22)' | perl -pe 's/\.[a-zA-Z-0-9]+\(/./g;s/\)//g'
.1.3.6.1.2.1.2.2.1.22

Et l’inverse :

snmptranslate -m NETWORK-APPLIANCE-MIB -Tl .1.3.6.1.4.1.789.1.7.3.1.1.5.0
NETWORK-APPLIANCE-MIB::cifsReads.0

Cacti – Renommer un “Internal Data Source Name” dans un “Data Templates”

Ne pas renommer comme un bourrin, c’est utilisé dans les RRA (fichier rrd).

1- chercher dans “Data Source” celles qui correspondent au template
2- ouvrir toutes les occurrences (s’il n’y en a pas faire 6 et 8 )
2a – ouvrir un graphique qui affiche cette valeur
3- noter les “Data Source Path” (<path_rra>/blablabla.rrd
4- se positionner dans <path_rra>
5- lancer “for f in fichier1.rrd fichier2.rrd;do rrdtool info $f|grep -E ‘^ds’;done” qui doit afficher :
ds[ancien nom]
6- préparer dans une fenêtre la modification du “Data Templates” avec son nouveau “Internal Data Source Name” (ne pas valider)
7- lancer “for f in fichier1.rrd fichier2.rrd;do rrdtool tune $f -r ancien_nom:nouveau_nom;done”
7a- relancer le 5 pour valider le changement
8- valider la fenêtre “Data Templates” avec son nouveau “Internal Data Source Name”
8b- recharger la fenêtre du 2a

Et voila

Tout pour gérer les timestamp – All for timestamp

Afficher le timestamp courant / print current timestamp:

perl -e 'print time;'
date +%s

Le timespamp de la veille / Yesterday timestamp:

perl -e 'print time-1*86400;'
date -d '1 day ago' +%s # Work only with up-to-date date such as Linux

su -

Comment faire lancer par un utilisateur une suite de commandes dans un script exécuté en temps que root ?
Howto launch commands by user in script executed by root.

Par exemple, je veux que l’utilisateur “oracle” exécute ces commandes :
For exemple I would like to execute there as “oracle”:

for i in azer qsdf fghj zaer fg ery qsjjy  azern ; do
        touch /tmp/tib/titi.$$.$i
done

Il suffit de l’encapsuler dans :
I just need to put commands between:

cat << "EOF" | su - user
EOF

Par exemple :
For example:

cat << "EOF" | su - oracle
for i in azer qsdf fghj zaer fg ery qsjjy  azern ; do
        touch /tmp/tib/titi.$$.$i
done
EOF

Et voilà ! / And voilà !

sed #2

Comment utiliser sed pour remplacer ça / Howto replace this with sed:

ns01:x:11062:11062::/home/ns01:/bin/sh
:x:11062:11062::/home/ns01:/bin/sh

En ça / To this:

ns01:x:11062:11062:::0:0
:x:11062:11062:d::0:0

Taper les lignes de codes / use there command line:

(echo ns01:x:11062:11062::/home/ns01:/bin/sh; \
echo :x:11062:11062:d:/home/ns01:/bin/sh ) \
| sed -r 's/^(([^:]*:){5}).*/\1:0:0/'

Explications :
s/ pour lancer la recherche
-r pour passer en expression régulière avancée
^ pour commencer en début de chaine
[^:]*: pour chercher tout ce qu’il peut y avoir avant un “:” y compris rien
grouper [^:]*: entre des () suivit de {5} pour avoir 5 occurrences du pattern
le .*$ à la fin de la chaine pour l’enlever dans la substitution

/ pour passer à la partie de ce qu’il faut mettre à la place
\1 pour récupérer, la première partie qui match entre ()
Dans l’exemple

ns01:x:11062:11062::
:x:11062:11062:d:

et :0:0 pour l’ajouter à la fin de la chaine ;)

Explanation:
s/ start the search
-r use extended regular expressions
^ start on the strings beginning
[^:]*: search anything excluding “:” including nothing
group [^:]*: in () followed by {5} to have 5 instance of pattern
the .*$ at the end was here to remove the rest

/ to pass at the remplacement
\1 to get first matching part was betwen ()
In this exemple

ns01:x:11062:11062::
:x:11062:11062:d:

and :0:0 for add it at the end ;)

Maintenant, vous pouvez utiliser la commande sed / now you can use the sed command:

sed -r 's/^(([^:]*:){5}).*/\1:0:0/' /etc/passwd

Ruby On Rails : undefined local variable or method `end_form_tag’

I try this in Ruby On Rails (ROR) :

<%= form_remote_tag %>
<%= end_form_tag %>

But I have this error :

undefined local variable or method `end_form_tag' for #

I search a lot of time this Week-End (without) Internet.

I found a solution here :
http://ajzone.wordpress.com/2008/03/11/ruby-on-rails-202/

First replace :

<%= end_form_tag %>

With :

<%= end %>

Because “end_form_tag” is deprecated. But after this correction I have this error :

compile error
/home/nico/testror/app/views/test/index.html.erb:1: syntax error, unexpected ')'

Add a do the the form tag:

<%= form_remote_tag do %>

And now there are:

compile error
/home/nico/testror/app/views/test/index.html.erb:2: syntax error, unexpected kEND

Transform this:

<%= form_remote_tag do %>
<%= end %>

To:

<% form_remote_tag do %>
<% end %>

The error come from the "=" char.

Edit a file with vim over ssh

Next step of http://blog.ledez.net/informatique/tips/editer-un-fichier-directement-en-ftp-avec-vim/

I would like to edit /etc/init.d/squid on bozzo host:

vim scp://bozzo//etc/init.d/squid

If you try with:

vim scp://bozzo/etc/init.d/squid

vim edit the file “etc/init.d/squid” in user home directory (/root/etc/squid/squid.conf in normal root account)

Delete line in vi

To delete line in vi(m) if line respect a pattern :

:g/^#/ d

Is delete comment lines

:g/^$/ d

Is delete empty lines

Démenager son site WordPress

Comme j’ai déménagé mon blog de chez Free à chez moi (voir billet “Mise à jour du blog“), je voulais pouvoir :
- Récuperer tous mes billets
- Et transférer mes “requêtes” arrivants de Google

Première partie finalement super simple, “manage/export” sur le site source (Free). Et import sur la destination (ici). Et WordPress, c’est plus fort que toi ! On peut même cocher une case pour importer les images. Seuls quelques billets, style brouillons ont posés problèmes.

Pour la deuxième étape, j’ai un peu cherché et trouvé cette solution. J’espère que ça va marcher pour le référencement Google, en tout cas ça marche quand on clique.

Donc j’ai installé chez Free le plug-in WordPress :
Moving Your Blog

Paramètres :

http://blog.ledez.net/

Et ici le plug-in WordPress :
Permalinks Moved Permanently

Il n’y a rien à configurer ici.