Articles Taggés ‘ligne de commande’

Yml2Sql: Convertir une fixture yml en fichier sql

29 avril 2010

Je devais utiliser une fixture au format YAML[Wikipedia] (.yml) pour peupler ma db PostgreSql[Wikipedia] mais apparemment c’est pas trop faisable directement avec rake ou autres.

Google ne me satisfaisant pas .. j’ai écrit un script ruby[Wikipedia] (à l’arrache !) qui convertis un fichier YML en SQL qui puisse être utilisé par psql pour importer les données.

Le voici :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env ruby
require "yaml"

def show_usage
    puts "Usage: #{$0} YML-FILE-PATH [DESTINATION]"
    puts
end

def isNumeric(s)
    begin
        Float(s)
    rescue
        false # not numeric
    else
        true # numeric
    end
end

unless ARGV.size == 2
    show_usage
else
    begin
        output = File.open(ARGV.last, 'w')
        YAML::load(IO.read(ARGV.first)).each do |yml_line|
            table_name = yml_line[0].sub(/\d+/, "").chop
            sql_query = "INSERT INTO #{table_name} "
            sql_query_columns_name = "("
            sql_query_columns_value = "("
           
            yml_line[1].each_with_index do |table_column, index|
                if index > 0
                    sql_query_columns_name += ", "
                    sql_query_columns_value += ", "
                end
               
                sql_query_columns_name += table_column[0]
               
                sql_query_columns_value += "'" unless isNumeric(table_column[1])
                sql_query_columns_value += table_column[1].gsub(/.*'.*/, "''") if table_column[1] != ""
                sql_query_columns_value += "'
" unless isNumeric(table_column[1])
            end
            sql_query_columns_name += "
)"
            sql_query_columns_value += "
)"
           
            output.write sql_query + sql_query_columns_name + "
VALUES " + sql_query_columns_value + ";\n"
        end
    rescue SystemCallError
        puts "
IO failed: " + $!
    else
        puts "
Unknow error"
    end
end

add-apt-repository: Ajouter simplement un repo PPA à APT !

2 novembre 2009

deb

Je vient tout juste de découvrir cette magnifique commande, donc je partage ! :)

add-apt-repository

Pas la peine d’écrire des kilomètres d’article !
Cette commande permet d’ajouter un dépôt PPA (Personal Package Archive) au fichier source.list d’apt (le gestionnaire de paquet deb) !
Elle est disponible depuis la version 9.10 (Karmic Koala)

C’est à dire qu’il ajoute les célèbre lignes « deb http://ppa.launchpad.net/… » mais il télécharge et installe aussi les certificats GPG !

Elle est pas belle la vie !? 8)

Petit exemple ?

Ok, voici un petit exemple !

Je désire installer les drivers Nvidia patché avec vdpau (pour utiliser le GPU plus tot que le CPU pour décoder les vidéo HD) :

sudo add-apt-repository ppa:nvidia-vdpau
[sudo] password for zedtux:
Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –secret-keyring /etc/apt/secring.gpg –trustdb-name /etc/apt/trustdb.gpg –keyring /etc/apt/trusted.gpg –keyserver keyserver.ubuntu.com –recv 71609D4D2F1518FA9C5DC0FB1DABDBB4CEC06767
gpg: requête de la clé CEC06767 du serveur hkp keyserver.ubuntu.com
gpg: clé CEC06767: clé publique « Launchpad Nvidia Vdpau Team PPA » importée
gpg: Quantité totale traitée: 1
gpg: importée: 1 (RSA: 1)

Ensuite, il ne reste plus qu’à faire l’habituel

sudo apt-get update

Et les nouveaux paquets sont prêt à être installé !

Ubuntu…. c’est trop fort !

vrms: virtual Richard M. Stallman: 0.6%

11 septembre 2009

Comme c’est en ce moment la mode, voici les résultat chez moi ! :)

$ vrms
Non-free packages installed on zUbuntu

linux-generic Complete Generic Linux kernel
linux-restricted-modules- Non-free Linux 2.6.28 modules helper script
linux-restricted-modules- Restricted Linux modules for generic kernels
nvidia-180-kernel-source NVIDIA binary kernel module source
nvidia-180-libvdpau Video Decode and Presentation API for Unix
nvidia-180-modaliases Modaliases for the NVIDIA binary X.Org driver
nvidia-glx-180 NVIDIA binary Xorg driver
sun-java6-bin Sun Java(TM) Runtime Environment (JRE) 6 (architecture
sun-java6-jre Sun Java(TM) Runtime Environment (JRE) 6 (architecture
unrar Unarchiver for .rar files (non-free version)
Reason: Modifications problematic
xmind XMind – Brainstorming and Mind Mapping

Non-free packages with status other than installed on zUbuntu

mythtv-backend ( dei) A personal video recorder application (server)
mythtv-database ( dei) A personal video recorder application (databas

Contrib packages installed on zUbuntu

gnormalize Audio file converter, normalizer and CD ripping utilit
nvidia-settings Tool of configuring the NVIDIA graphics driver

13 non-free packages, 0.6% of 2252 installed packages.
2 contrib packages, 0.1% of 2252 installed packages.

SSH: Connexion par clé RSA ou DSA

10 septembre 2009

Terminal-128x128

SSH est un outil très bien pensé, et est vraiment adapté aux besoin d’administration d’un serveur distant.

Ici, nous allons parler de la connexion aux moyens de clés RSA ou DSA.

Attend ! C’est quoi ca DSA et RSA ??

Ce sont deux modules qui permettent de valider l’authenticité d’une connexion.

Lorsque DSA ne fait que signer la connexion, RSA la signe et la crypte en plus.

» En lire plus:SSH: Connexion par clé RSA ou DSA

SSH: Accélérer la connexion

1 septembre 2009

Terminal-128x128

Se connecter à SSH prend parfois un peu de temps, car SSH effectue une recherche DNS inversé, qui est tout à fais inutile.

Pour désactiver cette recherche à la connexion, il suffit de modifier le fichier /etc/ssh/sshd_config et d’y ajouter ceci:

UseDNS no

Redémarrez SSH, et essayez de vous connecter de nouveau… vous devriez voire une différence ! ;)

inotify: Être avertis des changements de fichiers

3 juillet 2009

Je vient de résoudre une demande, grâce à la ligne de commande, en 10min !! :)

Le but étant de contacter un serveur, lorsqu’un nouveau fichier est déposé dans un répertoire, afin que cet autre serveur viennent les traiter.

» En lire plus:inotify: Être avertis des changements de fichiers

syslog: Enregistrer vos logs en bash

3 juillet 2009

Pour créer des entrés log dans syslog depuis bash il suffit d’utiliser la commande logger.

Les paramètres sont simple, mais voici une toute petite description:

L’argument -p permet définir la priorité, mais surtout où écrire les lignes de log.
Vous ne pouvez pas, cependant, créer une destination de votre choix. Vous n’avez le chois qu’entre auth, daemon, mail etc … ( voire man logger ).

L’argument -t sera sûrement très utile: Il permet de tagger votre log. Généralement, il y ai mis le nom du process qui génère ce log.

Au final, voici un exemple :

logger -p ‘user.info’ -t myexample Hello World

Subversion: Créer des liens !

9 juin 2009

gnome-ccmime

Gné ??

L’idée, ici, est de créer un lien d’un dossier du repository, ou d’un autre repository au dossier courant.

Par exemple, j’ai un dossier utils/ qui contient divers outils réutilisable n’importe où (ranger dans un dossier trunk bien entendu ;) ), que je veux lier à mon projetA/.

Donc, je veux que lorsque je face un checkout de /projetA/ que le dossier /utils/ soit aussi pris et donc je veux en locale /projetA/utils/.

L’avantage, c’est que, si je modifie mon fichier /utils/logging.h, la modification sera automatiquement répandue partout !

» En lire plus:Subversion: Créer des liens !

Rechercher tout les fichiers qui contiennent…

8 juin 2009

find_with_rgrep

Moi il m’arrive très souvent de vouloir savoir dans quels fichiers se trouve tel mot ou ensemble de mots.
Mais comment faire ?

Je ne connais pas d’outils graphique pour le faire, mais en revanche, je connais des outils console !
( Ca pourrait être une bonne idée de projet… Intégrer dans la recherche de nautilus la recherche de string dans un ensemble de fichiers… ;) )

» En lire plus:Rechercher tout les fichiers qui contiennent…

Créer un fichier Loop

2 juin 2009

Qu’est ce qu’un fichier loop ?

C’est un fichier généré, depuis une loop, un boucle, avec un source, et une destination.
Une des utilité de ce genre de commande, est la création d’un fichier, qui servira d’espace de stockage, crypté par exemple.
Donc, ont créer, par exemple, un fichier de 100Mo, que l’on crypte, et que l’on place sur une clé USB, pourquoi pas, puis, il suffit d’y accéder en tapant la passphrase, et vous pourrez y déposer des fichiers qui seront crypté une fois que vous les copierez à l’intérieur.

Moi j’en ai juste besoin pour tester mon programme. Donc je ne décris que la partie qui m’intéresse: Générer un fichier.

Comment ?

La commande dd va créer le fichier, et losetup va permettre d’utiliser ce fichier.

Il suffit d’utiliser une ligne de commande que voici:

dd if=ici_la_source of=ici_la_destination bs=taille_du_buffer count=nombre_de_fois_que_le_buffer_est_copié

Concrètement, ca pourrait être:

dd if=/dev/zero of=/home/zedtux/privatespace bs=1M count=100

Ici, nous utilisons comme source /dev/zero (if), ce qui produira un fichier vide, dont on prend 1Mo (bs), que l’on répète 100 fois (count), dans le fichier /home/zedtux/privatespace (of)
Donc, nous aurons un nouveau fichier /home/zedtux/privatespace de 100Mo.

Y mettre des données aléatoire

Toujours dans l’optique de tester mon programme, j’ai besoin que ce fichier contienne des données, mais je m’en fou de ce que c’est.
Et là, Linux, encore une fois, à une solution !! :)

Mettre des données aléatoires dans mon fichier

Comme toujours, une petite ligne de commande, et c’est réglé !!

Pour commencer, je monte le fichier sur une loop:

losetup /dev/loop0 /home/zedtux/privatespace

Maintenant, je peux injecter des données aléatoire:

badblocks -s -w -t random -v /dev/loop0

Source: http://goohackle.com/how-to-create-a-portable-encrypted-file_system-on-a-loop-file/