Tips systèmes

De Sn4kY
Aller à : Navigation, rechercher

Sommaire

Liens externe

https://jeznet.org/Wiki/CodeSnippets

MYSQL

Créer compte user :

CREATE USER <user> IDENTIFIED BY '<password>';

créer un compte utilisateur + database

GRANT ALL PRIVILEGES ON <database>.* TO '<user>'@'<host>' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON <database>.* TO '<user>'@'<host>' IDENTIFIED BY PASSWORD '*<password_hash>';

voir les comptes utilisateurs

select host, user, password from mysql.user;

dumper une base et la compresser a la volée

mysqldump -h $HOST -u $USER -p $DATABASE | gzip > dump_$DATABASE.sql.gz

importer dans MySQL une base gzippée

gunzip -c < dump_$DATABASE.sql.gz | mysql -h $HOST -u $USER -p $DATABASE

Import MySQL over SSH

ssh $HOST "mysqldump -u $USER1 -p$PASS1 $DB1" | mysql -u$USER2 -p$PASS2 $DB2

Import GZIP MySQL over SSH On the fly

ssh $HOST "mysqldump -u $USER1 -p$PASS1 $DB1 | gzip" | gunzip -c | mysql -u$USER2 -p$PASS2 $DB2

Obtenir la taille de toutes les bases de données

SELECT table_schema "DB Name", 
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema;

Obtenir la taille d'UNE base de données mentionnée

SELECT table_schema "DB Name", 
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables
WHERE table_schema = "YOUR_DATABASE_NAME"  
GROUP  BY table_schema;

SYSTEME

beaucoup de connexions

netstat -pant | grep -i esta | awk '{print $5}'| cut -d ":" -f 1| sort |uniq -c

fait le total d'espace disque utilisé par les vhosts

for i in `grep -i documentroot /opt/applis/httpd/conf/httpd.conf | grep -v "#"| awk '{ print $2}'`;do du -sh $i;done

fouiller un fichier de log entre 2 dates

awk '/Apr 1 11:00:00/,/Apr 1 16:15:00/{print}' /var/log/httpd/httpd_access.log
awk '$0>=from&&$0<=to' from="Apr 1 11:00:00" to="Apr 1 16:15:00" /var/log/httpd/httpd_access.log

Liste les répertoires et les trie par taille

du -h --max-depth=1 | perl -e 'sub h{%h=(K=>10,M=>20,G=>30);($n,$u)=shift=~/([0-9.,]+)(\D)/; return $n*2**$h{$u}}print sort{h($b)<=>h($a)}<>;'

tar over ssh

tar zcvf - /path | ssh root@server "cat > /backup/wwwdata.tar.gz"

tar over ssh untar

tar zcvf - /path/to/directory/ | ssh root@inrage.fr "cd /path/to/ && tar zxvf - "

vitesse d'un pipe

command1 | cpipe -vt | command2

CHROOT

Créer le nécessaire du chroot

mount /dev/<devicepX> /mnt
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount -t proc /proc /mnt/proc
mount --bind /run  /mnt/run
mount -t sysfs /sys /mnt/sys
chroot /mnt /bin/bash

Démonter le tout

umount /mnt/sys
umount /mnt/run
umount /mnt/proc
umount /mnt/dev/pts
umount /mnt/dev
umount /mnt

IPTABLES

diagramme de flux

http://www.linuxchannel.net/board/board_files/alpha/phpIqSLS2/iptables.gif

Blacklist en masse

utilisation = un des sed retire les connexion qui ont une patern de regex en nombre de connexion, ceux qui restent sont a bl (ici 60)--

netstat -nt | grep ':80' | sed -e 's/.*:80 //' | sed -e 's/:.*//' | sort | uniq -c | grep -v 172.25.8.62 | grep -v 172.25.8.61 | grep  -v 172.25.8.60 | grep -v 10.252.5.74 | grep -v 10.252.5.25 | grep -v 217.174.192.246 | sed 's/^ *[1-9] .*//g' | sed 's/^ *[1-5][0-9] .*//g' | sed '/^$/d' | awk {'print$2'}  | sed '/^[ ]*#\|#\|^$/! s/.*/network-object host &/'


MAIL

Clean mailq

mailq | grep -B1 "Connection refused" | cut -d" " -f1 | grep -e "[A-Z][1-9]*" | xargs -L1 postsuper -d
sendmail -qSMAILER-DAEMON -v -O Timeout.queuereturn=1s -O Timeout.connect=1s -O Timeout.ident=0s

relance force des mails :

kill -ALRM <qmail-send pid>

Lire un fichier .db

makemap -u hash /etc/mail/virtusertable.db

Nombre de mails par destinataires

mailq|awk 'NR=3 {print $1}'|awk -F "<" 'length($2)>0 {print $2}'|sed "s/>//g"|sort|uniq -c|sort

Nombre de mails par domaine

mailq|awk 'NR=3 {print $1}'|awk -F "<" 'length($2)>0 {print tolower($2)}'|sed "s/>//g"|awk -F "@" '{print $2}'|sort|uniq -c|sort

SMTP en telnet

telnet serveur.com 25
HELO agarik.com
MAIL FROM: <sn4ky@sn4ky.net>
RCPT TO: <sn4ky@sn4ky.net>
DATA
Subject: Sujet
Message
.

encoder en base64 : http://ostermiller.org/calc/encode.html

IMAP en telnet

inbox représente le nom du répertoire IMAP dans lequel on souhaite lire le mail

1 représente le numéro du mail, par ordre d'arrivée sur le serveur

telnet serveur.com 143
. LOGIN username ********
. LIST "" "*"
. SELECT inbox
. FETCH 1 full
. FETCH 1 BODY[TEXT]
. LOGOUT

source : http://bobpeers.com/technical/telnet_imap

POP en telnet

telnet serveur.com 110
USER username
PASS ********
LIST
TOP 1
RETR 1
DELE 1
QUIT

APACHE

Rediriger entièrement en SSL

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

SWAP

Modifier la manière dont le kernel va utiliser la mémoire SWAP, on va modifier le paramètre système vm.swappiness. Ce paramètre exprime l'agressivité du noyau à utiliser l'espace de pagination (SWAP) pour les processus réalisant peu d'échanges mémoire.

La valeur exprimée est un pourcentage. 0 corresponds à une utilisation la plus faible possible de SWAP (quasi inexistante), tandis que 100 corresponds à une utilisation maximale de la SWAP.

Pour connaitre sa valeur actuelle

cat /proc/sys/vm/swappiness

Pour modifier à la volée

sysctl vm.swappiness=XX

(Il faut désactiver et réactiver totalement les espaces SWAP pour prendre en compte la valeur)

swapoff -av
swapon -av 

Pour rendre le paramètre actif dès le boot, rajouter vm.swappiness=XX dans le fichier /etc/sysctl.conf

Script pour connaitre les processus qui swappent :

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` ; do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done  | grep -v "Swap used: 0 "

Nouveaux Kernels Script pour connaitre les processus qui swappent :

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep VmSwap $DIR/status 2>/dev/null| awk '{ print $2 }'` ; do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done  | grep -v "Swap used: 0 "

Limite sur le nombre de fichiers ouverts

Sur Linux, il existe un paramètre permettant de limiter le nombre de fichiers ouverts par un utilisateur. Il s'agit du paramètre ulimit. La valeur par défaut de ce paramètre est usuellement de 1024.


$ ulimit -a #liste les paramètres kernel des limites
$ ulimit -n #affiche la limite du nombre de fichiers ouverts
# ulimit -n 65535 #augmente la limite du nombre de fichiers à 65535 pour l'utilisateur courant

Modifier ce paramètre ne le modifie qu'en "mou". il n'est valide que pour la session courante de l'utilisateur en cours.

Pour que cette modification soit permanente, il faut procéder à quelques ajustements :

Éditer le fichier /etc/pam.d/common-session pour y insérer la ligne :

session required pam_limits.so

Puis éditer le fichier /etc/security/limits.conf pour procéder aux ajustements :

user      soft     nofile     131070
user      hard     nofile     262140

D'autres modification peuvent être effectuées, se référer à man 5 limits.conf

DUMMY RPM

php-5.2.14-1.spec

###############################################################################
Summary : Dummy php 5.2.14-1
Name: Agarik-php
Version: 5.2.14
Release: 1
License: GPL
Group: Services
Source: agarik.com
URL: http://www.agarik.com
BuildArch: noarch
Provides: php-5.2.14-1

%description
Ceci est un dummy package pour le service <service-version> installé par Agarik
%files
###############################################################################
rpmbuild -bb php-5.2.14-1.spec
rpm -U /usr/src/redhat/RPMS/noarch/Agarik-php-5.2.14-1.noarch.rpm

7Zip script

compress tous les fichiers d'un répertoire

@ECHO OFF
FOR /F "usebackq delims==" %%y IN (`dir /b *.log`) DO CALL :compress %%~ny
GOTO :fin
:compress
C:\"Program Files"\7-Zip\7z.exe a %1.zip %1.log
del %1.log
GOTO :eof
:fin
ECHO tous les fichiers ont ete traites...

MEGACLI

MegaCli -LDInfo -LALL -aALL ; donne infos essentiels
MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache en readadaptative
MegaCli -LDSetProp WB -LALL -AALL ; passe le cache en write back
MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached
MegaCli -AdpBbuCmd -BBuLearn -a0 ; lance un relearn de la batterie
MegaCli -AdpBbuCmd -GetBbuCapacityInfo  -aALL ; vérifie si la batterie est en charge ou pas
MegaCli -AdpAllInfo -aALL ; info general 
MegaCli -LDInfo -LALL -aALL ; info carte
MegaCli -PDList -aALL ; info disques

Similitudes commandes UNIX/LINUX/AIX

http://bhami.com/rosetta.html

IPMI

A faire lorsque le process kipmi0 prends 100% de CPU et que le load monte en conséquence

echo "remove,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0" > /sys/module/ipmi_si/parameters/hotmod
echo "add,kcs,i/o,0xca8,rsp=4,rsi=1,rsh=0,irq=0,ipmb=0" > /sys/module/ipmi_si/parameters/hotmod
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils