Copie de contenu de dossiers avec TAR

On est parfois amener à deplacer les données d'un dossier vers un autre, cette opération peut être faite avec la commande TAR:
ex: cd ACOPIER; tar cf - .| (cd CIBLE; tar xvf -)
explication: on va dans le dossier ACOPIER, on l'archive avec TAR (faire attention au "." de la commande). On "pipe" ensuite une série de commandes qui permettront d'aller dans le dossier CIBLE et d'extraire l'archive TAR.
--
Y.Pournin
Site: http://www.pournin.com

Comprendre et bien choisir son ELEVATOR

Il est possible sous RHEL d'optimiser son système en préférant un type de contrôleur d'I/O.
Sous les noyaux 2.6 il se configure en rajoutant elevator=XXX* dans son fichier grub.conf
Je vous renvoie sur cet article qui aborde ces différents elevator afin de choisir le plus efficace.
http://www.redhat.com/magazine/008jun05/features/schedulers/


*où XXX est un elevator (exemple pour l'elevator NOOP on ajoutera elevator=noop dans grub.conf)
--
Y.Pournin
Site: http://www.pournin.com

Bash et incrémentation

Une astuce donnée lors de ma formation RH442
On est parfois amené à gérer des fichier issus de rotations de logs
(logrotate). On se voit donc gérer des fichiers de la forme: xxx.log.1,
xxx.log.2, etc.
Lorsque je scriptais ou que j'avais à gérer ces fichiers j'utilisais la
commande seq en bash
#for i in $(seq 1 5); do echo $i ; done
Avec la version 3 de bash on peut maintenant simplifier cette commande en:
#for i in {1..5}; do echo $i ; done
Je la trouve plus simple à mémoriser.
exemple d'application directe: for i in {1..5}; do gzip access_log.$i; done
-> On compressera tous les fichiers logs de 1 à 5
--
Y.Pournin
Site: http://www.pournin.com

OREON

Projet: Oreon
Site: http://www.oreon-project.org/
Descriptif: "Oreon est un logiciel de surveillance et de supervision
réseau basé sur le moteur de récupération d'information Open Source le
plus performant : Nagios."
--
Y.Pournin
Site: http://www.pournin.com

Enfin.....la RHEL5!

Avec un peu de retard la voici enfin sortie: la RHEL 5.
J'en profite pour rajouter un nouveau thème à mon blog que j'appellerai "news" mais revenons-en à la RHEL 5:
un aperçu des applications fournies est disponible sur (l'excellent) site de RedHat Magazine:
http://www.redhatmagazine.com/2007/03/14/red-hat-enterprise-linux-5-application-overview/
Clairement Red Hat affiche sa volonté de répondre à SUSE avec de nombreuses applications tiers.
Avis aux RHCE: les examens RHEL5 seront accessibles en France à partir du 16/04/07 (Red Hat France me l'a confirmé). Il ne reste plus qu'à attendre la Centos 5, une très bonne distribution clone des RHEL ( http://www.centos.org)

NB: RHEL = Red Hat Enterprise Linux

--
Y.Pournin
Site: http://www.pournin.com

Ruby on Rails sur centos

Un très bon wiki qui m'a permis d'installer Rails pour un projet scientifique:
http://wiki.rubyonrails.org/rails/pages/Rails+on+CentOS+4.3+with+Apache+and+FastCGI+Simply
Il a évolué depuis les dernières modifications que j' ai apportées.
--
Y.Pournin
Site: http://www.pournin.com

NPH PROXY

Description de l'outil

Toutes les informations ont été trouvées sur le site: http://www.jmarshall.com/tools/cgiproxy/

Installation

Une fois le script téléchargé nous le déployons sur notre serveur WEB.

Pour son fonctionnement il faut: mod_perl d'installé et modifier le chemin d'exécution du perl.

Nous souhaitons utiliser ce script pour des connexions classiques et des connexions chiffrées supportant SSL. Pour cela nous installons auparavant le module Perl Net::SSLeay avec l'outil CPAN.

Notre serveur de référence sera le serveur Example.com, voici les étapes de l'installation:

  1. Créer le répertoire d'accueil:

    #mkdir /data/www/www.example.com/Web_proxy

  2. Vérifier que les droits d'exécution soient bien positionnés

  3. Configurer le serveur Apache pour exécuter ce script (nous limitons son utilisation aux utilisateurs de l'intranet:

#######################################################
Alias /proxy "/data/www/www.example.com/Web_proxy"
<Directory "/data/www/www.example.com/Web_proxy">
Options +Includes +FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
AllowOverride None
Order deny,allow
Deny from all
Allow from .example.com
AuthType Basic
AuthName "l'Intranet EXAMPLE.COM"
AuthUserFile /etc/httpd/conf/htpasswd/intranet/.htpasswd
require valid-user
satisfy any
</Directory>
#######################################################

  1. Nous forçons aussi la navigation en https:
    Redirect /proxy https://www.example.com/proxy

  2. le service apache est relancé pour prendre en compte les changements, nous pouvons utiliser le script à l'URL:
    https://www.example.com/proxy/nph-proxy.cgi

Configuration

Nous allons maintenant décrire la configuration du proxy. Toutes les options sont disponibles sur:
http://www.jmarshall.com/tools/cgiproxy/#options

Le comportement que nous souhaitons:

  • Imposer une configuration standard pour les utilisateurs

  • Limiter les sites avec lesquels l'outil peut être exécuté

Pour cela nous modifions les options suivantes:

  • nous limitons l'affichage du script: $INSERT_ENTRY_FORM= 0

  • nous désactivons la configuration utilisateur: $ALLOW_USER_CONFIG= 0

  • nous précisons le mode SSL: $RUNNING_ON_SSL_SERVER= '1'

  • pas d'option "restart": $NO_LINK_TO_START= 1

  • nous limitons les sites avec lesquels l'outil doit être utilisé:
    @ALLOWED_SERVERS=('\.yahoo\.com$','\.redhat\.com$') ;

Utilisation

Nous prendrons comm exemple l'accès au site WWW.SCIENCEDIRECT.COM
Le lien à créer est:
https://www.example.com/proxy/nph-proxy.cgi/111110A/http/www.sciencedirect.com/

Les options 111110A indiquent des choix sur le comportement du proxy qui sont:

  • Remove all cookies (except certain proxy cookies)

  • Remove all scripts (recommended for anonymity)

  • Remove ads

  • Hide referrer information

  • Show URL entry form

A prévoir

  1. Vérifier les ressources prises par le script dans le cadre d'une utilisation à grande échelle

  2. Tester la rapidité d'exécution des requêtes web


--
Y.Pournin
http://www.pournin.com

Aide mémoire Solaris

Pour (re)découvrir les commandes sous Solaris
Cet article est issu du site http://www.e-atlantide.com/securite/sun.htm

INFORMATIONS Système

Architecture matérielle

hostid
donne le numéro de série de la machine. utile pour certains produits dont les licences sont fournies pour un numéro de série donnée

uname -nra
n: affiche le nom d'hôte de la machine
v: affiche la version du systèmes d'exploitation
a: affiche toutes les informations liées au système

prtdiag
donne le type de serveur (par exemple Ultra 143 ou 170 ...), la capacité mémoire RAM ainsi que le nombre de processeurs installés

Informations d'exploitation

dmesg
donne les derniers messages affichés lors du démarrage de la machine (/var/messages)
last reboot
pour afficher la date et heure des derniers reboot de la machine

df -k

donne le taux d'occupation des partitions et disques durs de la machine

Installation de patchs et packages


showrev -p
donne les numéros de série des différents patchs installés sur la machine

pkginfo
donne la liste des packages logiciels installés sur la machine

pkgadd -d
permet d'installer proprement des packages pour Solaris

pkgrm
permet de désinstaller proprement des packages pour Solaris

Répertoires ET FICHIERS

Renseignements

ls -alrtR
a: affiche tous les fichiers y compris les fichiers cachés
l: affichage des fichiers en formats long
t: affichage des fichiers triés par date
r: affichage inverse des fichiers triés (couplés à l'option -t)
R: affichage récursif

du -s
s: affiche la taille en blocs de 512 octets du répertoire

Copies et Déplacements

cp -rip
r: copie récursive des sous-répertoires
i: copie en mode intéractif (demande de confirmation)
p: préserver les date de modification et droits d'accès

mv -if
i: mode intéractif (demande de confirmation)
f: forcer même si le fichier destination existe

ln -s
s: création d'un lien symbolique

rm -ifr
i: mode intéractif (demande de confirmation)
f: forcer la suppression sans confirmation explicite
r: suppression récursive des sous-répertoires

rmdir
suppression d'un répertoire vide

Comparaison

diff
cmp
Droits d'accès

chmod nnn
chmod ugoa+rwx
u: l'utilisateur détenteur de l'objet est concerné (user)
g: le groupe dont appartient l'utilisateur (group)
o: les autres (other)
a: tous les utilisateurs (all)
r: accès autorisé en lecture (read)
w: accès autorisé en écriture (write)
x: accès autorisé en exécution (execute)

chown -R uid.gid
chgrp gid
R: récursif
uid: User ID
gid: Group ID

Compression et Packaging

tar tcxvf [
t: lister le contenu d'un fichier tar
c: créer un fichier tar
x: extraire un fichier tar

compress/uncompress
gzip/gunzip ( freeware GNU pour Solaris )
unzip ( freeware pour Solaris )
zcat

Divers

touch -acm
a: mise à jour de la date d'accès
c: ne pas créer un fichier s'il n'existe pas auparavant
m: mise à jour de la date de modification

strings
affichage des chaînes de caractères ASCII dans un fichier binaire

PROCESSUS

Renseignements

ps -eaf
a: affiche tous les processus sauf ceux non rattachés à un terminal
e: affiche tous les processus
f: affichage listing complet (full)

/usr/ucb/ps -aux
commande équivalent à la commande ci-dessus. Toutefois, elle permet d'afficher le taux d'occupation CPU et RAM par chacun des processus listés. C'est une commande SunOS préservée dans Solaris

top (freeware)
affiche en temps réel tous les processus triés par taux d'occupation CPU; non disponible en standard sous Solaris; plutôt un freeware utile - /usr/ucb/ps -aux donne ceci mais pas de rafraîchissement automatique

fuser
donne le PID (process ID) du processus utilisant le fichier , utile pour savoir si le fichier est libre ou pas avant de faire le ménage dans un dossier temporaire par exemple /tmp

Arrêt (ou envoi d'un signal système)

kill -9 pid
arrêt d'un processus; à effectuer seulement en dernier recours car c'est un arrêt brutal ne permettant pas au service de s'arrêter proprement
kill -1 pid
forcer le chargement des fichiers de configuration d'un processus - par exemple, le démon des services Internet inetd

Renseignements système

ipcs -mqs

m: affiche les mémoires partagées actives utilisées par un processus
q: idem mais pour les queues de messages
s: idem mais pour les sémaphores

ipcrm
pour libérer les mémoires partagées, les queues de message ainsi que les sémaphores utilisées par un processus; permet un nettoyage système après un arrêt brutal d'un processus applicatif

lsof (list of open files: freeware très utile pour Solaris)
affiche toutes les ressources utilisées par tous les processus en cours d'exécution - par exemple, quel est le processus qui écoute sur le port TCP 1037 ? il suffit d'exécuter lsof | grep TCP

lsof -g pid (list of open files: freeware très utile pour Solaris)
affiche toutes les ressources utilisées par un processus donné pid, y compris les ressources réseau

TRAITEMENT FICHIERS TEXTES

Recherche de chaîne de caractères et fichiers

grep -i
recherche la chaîne de caractères dans le fichier précisé
i: ne pas tenir compte de la casse (majuscule ou minuscule)

find / -print | xargs grep -i
recherche tous les fichiers contenant la chaîne de caractères en partant du répertoire racine, on peut bien entendu restreindre cette recherche à un répertoire précis

find / -type f -name -print
recherche tous les fichiers dont le noms est à partir du répertoire racine, on peut bien entendu restreindre cette recherche à un répertoire précis

awk

awk -f
traitement de fichiers structurés afin de reformater la présentation, idéal pour traiter des fichiers CSV - par exemple, pour extraire le premier champ d'un fichier CSV et modifier l'affichage:
cat | awk -F\; ' { print "premier champ="$1} '

sed

sed -f
traitement de fichiers afin de reformater la présentation, idéal pour substituer une chaîne de caractères par une autre - par exemple, pour remplacer partout dans un fichier la chaîne "entreprise.fr" par "entreprise.com":
cat | sed 's/entreprise.fr/entreprise.com/g'
Divers

cat | wc -lw
l: donne le nombre de lignes du fichier
w: donne le nombre de mots du fichier

cat | head -15
donne les 15 premières lignes du fichier

cat | tail -15
donne les 15 dernières lignes du fichier

tail -f
donne les dernières lignes du fichier avec rafraîchissement dynamique

| tee -a out
affiche le résultat de la commande à l'écran (stdout) et en même temps redirige le résultat dans le fichier out en mode append (rajout)

sort -u
affiche les lignes triées d'un fichier
u: les entrées identiques sont affichées une seule fois (unique)

cut -df
d: caractère délimiteur
f: liste des champs à extraire
par exemple: cut -d: -f 1,5 /etc/passwd

paste -d ...
d: caractère délimiteur

--
Y.Pournin
http://www.pournin.com

Apache et certificat SSL

Voici un petit rappel pour générer des certificats SSL:

Dans le répertoire /etc/httpd/conf on exécute les commandes suivantes

1/openssl genrsa -out ssl.key/server.key 1024 (sans passphrase)
2/openssl req -new -key ssl.key/server.key -out ssl.crt/server.csr
3/openssl req -x509 -days 10000 -key ssl.key/server.key \ -in ssl.crt/server.csr -out ssl.crt/server.cr

NB: "server" peut être remplacé par le nom du virtualhost
--
Y.Pournin
http://www.pournin.com

Include et apache

Le fichier httpd.conf est long et je trouve plus simple de travailler avec des inclusions de fichiers de parties régulièrement modifiées (comme la déclaration des sites).

Dans le httpd.conf :
############################################################################################

# apache repond sur les port 80 (HTTP) de toutes les adresses IP du serveur (dans notre cas)
NameVirtualHost *:80
# apache repond sur le port 443 (HTTPS) de toutes les adresses IP du serveur (dans notre cas)
NameVirtualHost *:443
Include conf/httpd.virtualhost.conf

############################################################################################

On inclue un fichier conf/httpd.virtualhost.conf qui contiendra:

############################################################################################

<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /data/www/html/
ServerName servername.example.com
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
include conf/sites.conf
include conf/proxy-http.conf
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin webmaster@mpl.ird.fr
    DocumentRoot /data/www/html/
    ServerName servname.example.com:443
    ErrorLog /var/log/httpd/error_log
    CustomLog /var/log/httpd/access_log combined
    SSLEngine on
    #SLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
    SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
    include conf/sites.conf
    Include conf/proxy-https.conf
</VirtualHost>
############################################################################################

On inclue ensuite les fichiers proxy-https.conf site.conf et proxy-http.conf en fonction du virtualhost.
De cette manière les sites du fichier sites.conf sont accessibles indifférement en http et en https.
Les fichiers proxy servent à rediriger les site d'http en https par exemple (pour le proxy-http.conf avec la fonction Redirect) ou à déclarer un site dans un seul virtualhost.

--
Y.Pournin
http://www.pournin.com

rpm --aid et gestion des dépendances

Dans un souci de simplification d'installation des futurs RPMS
l'ensemble du contenu des CDROM est copié dans un répertoire
/data/nobkp/RedHat/RPMS

Afin d'utiliser pleinement la gestion des dépendances de ces RPMS (gérée
par l'option « --aid ») un fichier .rpmmacros doit être créé dans le
répertoire /root

Ce fichier contient les lignes suivantes :

%_solve_pkgsdir /data/nobkp/RedHat/RPMS/

%_solve_name_fmt %{?_solve_pkgsdir}%%{NAME}-%%{VERSION}-\
%%{RELEASE}.%%{ARCH}.rpm

La gestion des dépendances est prise en compte une fois que le compte
root s'est reconnecté.

Exemple de configuration Logwatch

Logwatch est un utilitaire qui envoie des mails quotidiens pour indiquer l'état du système.

Dans le fichier /etc/log.d/logwatch.conf on modifie les lignes suivantes :

Service=all est commenté pour spécifier les services auxquels on s'intéresse :

exemple:

Service = mountd

Service = sshd

Service = sshd2

Service = syslogd

Service = up2date

Service = zz-disk_space

Service = cron

Service = sudo

Service = ftpd-xferlog

Service = ftpd-messages

La liste des services surveillés par Logwatch se trouvent dans le répertoire : /etc/log.d/scripts/services
--
Y.Pournin
http://www.pournin.com

Autorisation X Forwarding

Par défaut le serveur X des distributions Fedora tourne en mode nolisten (si l'on execute un ps -edf | grep X on retrouve cette option "nolisten")
Pour autoriser la récupération d'affichage X il faut:
  1. exécuter gdmsetup
  2. dans l'onglet sécurité décocher "Refuser les connexions TCP au serveur X"
  3. relancer le serveur X
--
Y.Pournin
http://www.pournin.com