Utilisation de AWT sur un serveur sans Xwindows

Lorsque l’on manipule de images, des fontes ou autre objets basés sur AWT, java utilisa par défaut des informations venant de votre serveur X ou de l’environnement graphique de Windows. (Sans doute hérité d’un passé Applet toujours présent). Lors de calculs coté serveur, ce fonctionnement peut poser problème : en effet pourquoi installer et démarrer X, et consommer de la mémoire inutilement pour une application web ?!?

Si vous êtes dans ce cas, voici l’option de la mort à passer à la JVM … cette variable est à initialiser avant de lancer le serveur d’application :

export JAVA_OPTS=”-DJava.awt.headless=true”

Voilà, c’est tout simple, j’espere que ceci vous aura éviter les 3heures passées à chercher le pourquoi du comment.

Connexion automatique avec ssh (clef rsa)

Vous souhaitez transférer de façon automatique une fichier via scp au travers d’un script sans que celui ne vous demande de saisir un mot de passe …
Ceci est tout à fait possible en utilisant le mode Batch de scp avec une authentification par partage de clef publique. Le système est simple à mettre en oeuvre :

Sur la machine depuis laquelle on souhaite se connecter :
Pour commencer il faut créer pour l’utilisateur qui va executer le script un couple de clefs publiques/privées. Pour ce, lancez pour cet utilisateur la commande ssh-keygen -t dsa en repondant par Entrée à chaque question. Cette commande va créer deux fichiers dans le répertoire ~/.ssh : id_dsa et id_dsa.pub.

Sur la machine sur laquelle l’on souhaite se connecter :
Copiez ensuite le contenu du fichier id_dsa.pub dans le fichier ~userCible/.ssh/authorized_keys. userCible étant l’utisitateur sous lequel vous allez vous connecter lors du transfert sur la machine distante.
Enfin, vérifier les doits d’accès qui doivent être 700 pour le répertoire .ssh et 644 pour le fichier authorized_keys.

Tester

Maintenant l’accès à la machine cible se fait simplement par la commande suivante : scp -B -i ~/.ssh/id_dsa userCible@destination:~/

Gare aux Auto-Virus

Qu’est-ce qu’un auto-virus (hormis un terme personnel qui vient de sortir de mon clavie) ?
C’est un virus qui par opposition aux virus classiques s’installe tout seul sur l’ordinateur sans réelle erreur de la part de l’utilisateur.
Par opposition aux virus commun que l’on déclenche en lançant pour une raison ou une autre un executable infecté.

Le dernier en date a fait du bruit, il profitait d’un trou de sécurité dans un des service réseau de Windows pour s’installer et se propager. L’utilisateur connecté à Internet était infecté sans toucher à son ordinateur.

Le nouveau trou de sécurité découvert dans les images jpeg pourrait être aussi dangereux vu le nombre d’images échangées par Mail et l’inoffencivité habituelle de ce type de fichier. D’autre part, un pirate malin pourrait falsifier des images sur des sites internet et ainsi très discrètement propager son virus … Les idées ne manqueront pas !

En cinq mots : METTEZ A JOUR VOS SYSTEMES !

Gestion des encodages des charactères dans les emails en java

Pour vous éviter de chercher 3 plombe la solution au problème des accents et autres caractères non US dans les e-mail, voici comment faire :

Comme dirait l’autre, RTFM, ceci dit la JavaDoc est tellement limpide sur ce point …

Donc, il suffit de spécifier lors de l’ajout des sujet et texte l’encodage “iso-8859-1″ et le tour est joué :

MimeMessage message = new MimeMessage(session);

message.setSubject(sujet,”iso-8859-1″);
message.setText(texte,”iso-8859-1”);
message.setHeader(“Content-Type”, “text/plain; charset=iso-8859-1”);
message.setHeader(“X-Mailer”,”Java”);

Ajout de bibliothèques à PERL

PERL a celà de bien qu’il intègre son outil de téléchargement de bibliothèque … Encore faut-il avoir sous la main une doc pour s’en servir :

  • taper la commande perl -MCPAN -e shell;
  • répondre aux questions
  • enfin taper install Package::Module

C’est tout simple !

Faire executer un script par root

Admettons que vous ayez un acces utilisateur lambda a une de vos machine, par exemple au travers d’un script telnet HTTP. Vous souhaitez passer une commande qui necessite les droits root. Pour celà, la solution consiste à lancer la commande suivante :

echo RootPassword | exec su root -c Commande

Eventuellement, la Commande peut être l’appel à un script : “sh script”

Connaitre la version et le type d’un serveur web

Pour connaitre le type de serveur web a qui l’on a affaire, une solution est de se connecter à l’aide de la commande telnet sur le serveur et de l’interroger :

telnet adresse_serveur 80
puis tapez (rien ne va s’afficher)
GET / HTTP / 1.0
suivit de 2 carriage return

Le serveur doit vous renvoyer un message avec en entête sa version et son nom.

Renomer une liste de fichiers avec des espaces

Lorsque l’on souhaite renommer un ensemble de fichiers contenant des caractères espace, l’utilisation d’une boucle de type :

for i in `find . -name “*” ; do

done

n’est par vraiement envisageable, en effet, les espaces identifiés comme des séparateurs de mots font que i prend pour valeur des sous ensembles du nom.

Pour résoudre ce problème, une solution consiste à modifier la variable IFS dont le rôle est de définir les séparateur de mots dans le shell bash.
La solution peut être la suivante :

export IFS=$’\n’
for i in `find . -name “*” ; do

done

i prend alors successivement les noms des fichiers, espaces inclus.