vendredi 20 décembre 2013

Transformer un script SQL avec des "insert" en fichier csv

Il est souvent utile de transformer des fichiers excel en expressions SQL, en "INSERT" SQL. Et inversement (plus rare) depuis le SQL vers un fichier CSV, c'est ce cas-ci que j'expose. Il s'agit d'une procédure qui peut certainement être optimisée. Si vous trouvez une optimisation possible, lâchez vous !

1. copy fichier.sql fichier.csv

2. vim fichier.csv

3.  :%s/^.*VALUES('.\{32}', '......\(.*\)', 'VALUE', '\(.*\)', '\(.*\)', null);/\1\t\2\t\3/g
>> Une ligne comme :
INSERT INTO country(id, constant_key, constant_type, nl_value, fr_value, properties) VALUES('d934509f8f894de79a786e284bdc735a', '00000_XG', 'VALUE', 'NIEUW-ZEELANDS OCEANIE', 'OCEANIE NEO-ZELANDAISE', null);

>> est remplacée par :
 XG      NIEUW-ZEELANDS OCEANIE  OCEANIE NEO-ZELANDAISE

4. Je veux ensuite que mon fichier soit trié alors:
:%sort
(tout simplement)

Plus d'infos : vimregex.com

samedi 23 mars 2013

Installer Arch Linux sur le Zyxel NSA320

Cet article va vous décrire les étapes que j'ai suivi pour installer Arch Linux sur mon nouveau Zyxel NSA 320. Un article qui s'il avait été écrit par un autre que moi, aurait pu m'aider dans les différents problèmes lors de l'installation.
Lorsque j'ai installé Arch Linux, j'ai suivi la procédure officielle. Elle m'a semblé incomplète puisque, j'ai été confronté à de multiples problèmes. Mais, je ne suis pas un expert en systèmes Linux, je ne veux pas la remplacer. Il s'agit toujours de la procédure officielle, elle est donc susceptible de changer, de s'améliorer, n'hésitez donc pas à vous y référer

Avant toute chose

  •  Faites une sauvegarde de toutes vos données.
  • Achetez un Cable Serie-USB TTL 3.3V. (J'ai acheté celui vendu par adafruit pour le Rasberry Pi). Strictement parlant, il n'est pas nécessaire mais il est tout de même fortement conseillé vu que les scripts d'installation ne sont pas encore tout à fait au point. De plus, ça rajoutera une corde dans votre expérience de geek !

Préparer une clé USB pour installer U-Boot

  1. Formater en Fat
  2. Extraire les fichiers de l'archive NSA320-alarm.tgz sur la racine de la clé.
  3. Et (pour suivre la procédure officielle, chez moi ça n'a pas marché), copiez ce fichier sur la racine de la clé en le renommant rootfs.tgz.

Connecter le câble série 

Bon là, c'est la partie où j'ai galéré. Je ne savais pas où connecter mon cable série.
Votre câble série est composé de 4 fils : VCC, TX, RX, GND
Sur le câble d'adafruit: VCC = rouge, TX = blanc, RX = vert, GND = noir.
Ne pas connecter le connecter VCC ! Le NSA utilisera son alimentation normale !

Premier boot

Mettez votre disque dur dans l'emplacement à gauche (HHD1). Branchez une connexion réseau.
Branchez votre cable série sur votre ordinateur de bureau. Nous allons établir une connexion 115200 bauds sur le cable série. Si vous utilisez ubuntu comme moi, exécutez cette commande (sur d'autre systèmes, d'autres programmes existent...) :
 sudo screen /dev/ttyUSB0 115200
Votre écran est noir en attente de data, mettez donc l'alimentation et suivez le processus d'installation... :-)
Si vous avez plus de chance que moi et que tout se déroule bien, passez directement à la phase post-installation.
Si vous avez moin de chance, votre processus se sera stoppé à "done, booting the kernel.". Suivez donc le reste de la procédure

Préparer votre disque dur

Suivez les étapes décrites dans le script 2 de votre clé usb :
  • Préparer 1 partition primaire de 16M et une autre partition primaire pour le reste de l'espace.
  • Formater la première en ext2 avec le label "boot".
  • Formater la seconde en ext4 avec le label "rootfs".
  • Les monter.
  • Copier le contenu de rootfs.tgz (voir + haut) dans la 2e partition.
  • Créer ce fichier dans le répertoire root :  power_resume.sh avec ce contenu (celui ci va server à régler le problème de la mauvais reconnaissance de la carte réseau) :
#!/bin/bash
# power_resume.sh [0/1]
# 0 to disable, 1 to enable.
# enable/disable resume from power loss.

# export both gpios
echo 47 > /sys/class/gpio/export
echo 49 > /sys/class/gpio/export

# 49 out, value 1
echo "out" > /sys/class/gpio/gpio49/direction
echo 1 > /sys/class/gpio/gpio49/value
# 47 out, value 1
echo "out" > /sys/class/gpio/gpio47/direction
echo $1 > /sys/class/gpio/gpio47/value
# set 49 value 0
echo 0 > /sys/class/gpio/gpio49/value

  • Copier le répertoire boot/ de rootfs.tgz dans la 1e partition.
Voici le code qui fait tout ça sur une machine Linux :

fdisk /dev/sda
o
n
p
1
+16M
n
p
2
p
w

mkfs.ext2 -L "boot" /dev/sda1
mkfs.ext4 -L "rootfs" /dev/sda2

mkdir -p /tmp/boot
mount -t ext2 /dev/sda1 /tmp/boot
mkdir -p /tmp/rootfs
mount -t ext4 /dev/sda2 /tmp/rootfs

tar xzf /mnt/parnerkey/rootfs.tgz -C /tmp/rootfs/

cp -aR /tmp/rootfs/boot/* /tmp/boot/

 Le boot qui marche

Vous avez placé votre disque dur ?  branché votre cable série ? Branché une connexion réseau ?
Dès le démarrage, appuyez sur une touche de votre clavier pour interrompre le processus.
Exécutez ces commandes :
setenv arcNumber 3956
 

setenv mainlineLinux yes
 

setenv bootargs_stock 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=/dev/nfs rw init=/init'
 

setenv bootargs_linux 'console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=/dev/sda2 rw rootwait loglevel=8'
 

setenv bootcmd_linux 'setenv bootargs $(bootargs_linux); ide reset; ext2load ide 0:1 $(loadaddr) /uImage; bootm $(loadaddr)'
fw_setenv bootcmd_stock 'setenv bootargs $(bootargs_stock); nand read.e $(loadaddr) $(kernel_addr) 0xA00000; bootm $(loadadr)'
 

setenv to_stock "setenv mainlineLinux no; setenv bootcmd \'run bootcmd_stock\'; saveenv; reset"
 

setenv to_linux "setenv mainlineLinux yes; setenv bootcmd \'run bootcmd_linux\'; saveenv; reset"

Et puis, la commande magique :
run bootcmd_linux

Post installation

Identifiez vous en tant que root (sans mot de passe)
  1. Changez votre mot de passe avec "passwd"
  2. Réglez l'horloge : date MMDDhhmmYYYY  et puis hwclock -w
  3.  Dans le répertoire /root. Donnez le droit en exécution au script qu'on a créé "power_resume.sh" : chmod +x power_resume.sh. Et puis : ./power_resume.sh 1
Votre système est maintenant fonctionnel, et accessible via ssh. N'oubliez pas de regarder votre adresse réseau avec ifconfig.