penthium2.org

Accueil | Tags | Archives

vendredi 24 avril 2015

Avoir le comportement de guake avec terminator

Suite a une petite discution sur irc je me suis penché sur le faite d'avoir le même comportement de guake, mais avec terminator !

J'ai trouvé 2 méthodes !

La première simple et très efficace : C'est directement dans les settings de terminator

La deuxième avec un petit script et deux petites applications.

1) Directement avec les settings de Terminator :

Avantage :

On n'a aucune application externe, pas de dépendance.

Inconvénient :

Terminator doit être lancé obligatoirement avant d'exploité l'avantage de guake

Paramétrage :

Aller dans les préférence de terminator, keybinding et rechercher la ligne :
hide_windows Toggle windows visibility F12

J'ai affecté la touche F12 à terminator pour cacher/dé-cacher la fenêtre.

2) Le script externe :

Avantage :

Si terminator n'est pas déjà lancé, le script lancera terminator.
Inconvénient :
Deux très légères dépendances : xdotool et wmctrl.

Installation :

Pour installer les dépendances il suffit de faire :
Pour Fedora :

dnf install xdotool wmctrl

Pour Debian :

sudo apt-get install xdotool wmctrl

Puis créer le fichier ~/bin/toggle_visibility.sh avec votre éditeur préférer ( vim est mon ami pour la vie ) avec ce contenu :

#!/bin/bash                 

#####################################################################################
################# Check for dependencies ( Fedora and Debian compatible) ####################
#####################################################################################
#Checking that all dependencies are met, since we cannot proceed without them.
declare -a DEPENDENCIES=("xdotool" "wmctrl");
declare -a MANAGERS=("dnf" "apt-get");

for DEPENDENCY in ${DEPENDENCIES[@]};
do
    echo -n "Checking if $DEPENDENCY is available";
    if hash $DEPENDENCY 2>/dev/null;
    then
        echo "- OK, Found";
    else
        echo "- ERROR, Not Found in $PATH";
        for MANAGER in ${MANAGERS[@]};
        do
            if hash $MANAGER 2>/dev/null;
            then
                echo -n "$DEPENDENCY is missing, would you like to try and install it via $MANAGER now? [Y/N] (default is Y): ";
                read ANSWER;
                if [[ "$ANSWER" == "Y" || "$ANSWER" == "y" || "$ANSWER" == "" ]];
                then
                    sudo "$MANAGER" install "$DEPENDENCY";
                else
                    echo "Terminating";
                    exit -1;
                fi
            fi
        done
    fi
done
#####################################################################################
################# Aplication ###########################################################
#####################################################################################
APPLICATION="$1";

#Checking if the application name provided by the user exists
if ! hash $APPLICATION 2>/dev/null;
then
    echo -e "$APPLICATION does not seem to be a valid executable\nTerminating";
    exit -2;
fi

#Checking if the application is running. We are using pgrep as various application are python scripts and we will not be able to find them using pidof. pgrep will look through the currently running processes and list the process IDs of all the processes that are called $APPLICATION.
PID=$(pgrep $APPLICATION);

#If the application is not running, we will try to launch it.
if [ -z $PID ];
then
  echo "$APPLICATION not running, launching it..";
    $APPLICATION;
else
    #Since the application has a live instance, we can proceed with the rest of the code.
    #We will get the PID of the application that is currently focused, if it is not the application we passed as parameter we will change the focus to that. In the other case, we will minimize the application.
  echo -n "$APPLICATION instance found - ";
    FOCUSED=$(xdotool getactivewindow getwindowpid);
    if [[ $PID == $FOCUSED ]];
    then
    echo "It was focused so we are minimizing it";
        #We minimize the active window which we know in this case that it is the application we passed as parameter.
        xdotool getactivewindow windowminimize;
    else
    echo "We are setting the focus on it";
        #We set the focus to the application we passed as parameter. If it is minimized it will be raised as well.
        wmctrl -x -R $APPLICATION;
    fi
fi

exit 0

Une chose interessante dans ce script est la première partie, elle donne une bonne méthode pour vérifier des dépendances de votre script, et les installer le cas échant. et ce que ce soit sur une débian ou une fedora. ( NICE ).



Une foi créer il faut donner le droit d'exécution au fichier :

chmod +x ~/bin/toggle_visibility.sh

Puis il faut attribué un racourcit clavier a votre script, n'utilisant que openbox, je ne vous indiquerais pas comment faire avec gnome, unity ou autre WM lourd.

Editez le fichier : ~/.config/openbox/rc.xml et ajoutez :

<keybind key="A-F12">
      <action name="Execute">
        <command>~/bin/toggle_visibility.sh terminator</command>
      </action>
</keybind>

Dans mon cas j'ai attribué la combinaison de touche : alt-F12

On relance ensuite openbox, et le bonheur commence.

Conclusion :

Pourquoi expliqué les deux méthodes, car elle sont complémentaire a mes yeux.

La deuxième méthode est une bonne pratique pour lancer votre terminator, puisque le script permet de vérifier si terminator est lancé ou non, et si non il le lance.

La première est très utile une fois un terminator déjà présent dans les processus.

Source du script :
http://bytefreaks.net/gnulinux/bash/howto-make-terminator-terminal-act-like-guake-terminal-in-fedora-20ubuntu-14-10

Lire la suite»

vendredi 3 avril 2015

Tmux sur serveur distant ( via ssh )

il peut être très utile d'avoir un session tmux sur un serveur distant !

ET surtout que celle ci se lance au démarrage du shell !

Par contre il est intéressant d'avoir plusieurs fenêtres ssh sur le même serveur ( même si avec tmux je vois plus trop l’intérêt, bref :D )

Voila donc un exemple de mise en œuvre :

Confirmer que dans ~/.bash_profile il y est :

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

A mettre dans son ~/.bashrc :

## Launch Tmux :
if [ -z "$TMUX" ]; then
   ~/.tmux/tmuxserv.sh
fi

Avoir un fichier ~/tmux.conf et tmux d'installé. ( vous trouverez un exemple de fichier de conf dans cette article : tmux openbox terminator )

Et le petit script maison à mettre dans ~/.tmux/tmuxserv.sh à configuer à votre guise ( car ici il lance weechat, oui je le met partout )

#!/bin/bash
if [[ -n $(tmux list-session 2> /dev/null) ]]
        then
                read -p "Tmux session exit : Do you want to take control ? (o/O/y/Y) [default : no ] : " rep
                if [[ "$rep" = o || "$rep" = O || "$rep" = y || "$rep" = Y ]]
                        then
                                tmux attach -d
                        else
                                echo "You can take control later with ~/.tmux/tmuxserv.sh "
                fi
        else
                tmux -2  new-session -d \; new-window weechat \; attach -d

fi

Que va t-il se passer maintenant !

A votre première connexion une session tmux sera lancer avec une fenêtre weechat et une fenêtre shell

Si vous vous connectez une deuxième fois en ssh, le shell vous proposera de prendre la session tmux ou de la laisser sur l'autre fenetre ssh.

Et bien sur si vous ouvrez des fenetre shell dans votre tmux, ces nouvelles fenêtre ne demanderont pas de prendre le contre de la session tmux ( car sinon ca risque de faire un peu du inception :D )

Have fun

Lire la suite»

jeudi 2 avril 2015

tmux wmctrl terminator openbox le bonheur

Tmux est un mutiplexeur de terminaux comme screen mais a mes yeux un peu plus évolué, et surtout scriptable.

L'installation est traditionnelle via votre gestionnaire de paquets.

A) Quelques raccourcis bien pratique :

1)Racourcit de base pour la gestion des fenetres ( onglets ):

<Ctrl> + <b> suivi de <c> : Créer un nouveau terminal dans la session tmux active

<Ctrl> + <b> suivi de <n> : Switcher entre les différents terminaux de la session

<Ctrl> + <b> suivi de <d> : Se détacher de la session tmux

<Ctrl> + <b> suivi de <w> : Affiche la liste des terminaux disponibles

<Ctrl> + <b> suivi de <t> : Afficher l’heure dans un terminal

2)Commandes dans un Split:

<Ctrl> + <b> suivi de <«> : Split vertical du terminal courant en deux + ouverture d’un terminal dans le nouveau panel

<Ctrl> + <b> suivi de <%> : Split horizontal du terminal courant en deux + ouverture d’un terminal dans le nouveau panel

<Ctrl> + <b> suivi de <o> : Switcher entre les terminaux splittés

<Ctrl> + <b> suivi de <espace> : Changer l’organisation visuelle des terminaux splittés

<Ctrl> + <b> suivi de <Alt> + (flèches directionnelles) : Reduire, agrandir fenêtre du split

<Ctrl> + <b> suivi de <!> : Convertir un split en terminal seul

<Ctrl> + <b> suivi de <q> : Afficher les numéros des terminaux splittés

<Ctrl> + <b> puis saisissez :join : permet de joindre un terminal seul dans un split

B) Votre tmux est hautement configurable

Le fichier de conf de tmux est à placer dans votre home : ~/.tmux.conf voila le mien :

#Utilisation de crtl-w plutot que crtl-b ( c'est plus facile )
unbind C-b
set -g prefix C-w
bind C-a send-prefix
#navigation entre les fefètre avec ctrl les flèche : ( adieu ctrl-w n )
bind-key -n C-right next
bind-key -n C-left prev
#####
#On change les raccourcis pour faire du split vertical et horizontal
##On utilise la touche "|" (pipe) pour faire un split vertical
bind | split-window -h
##Et la touche "-" pour faire un split horizontal
bind - split-window -v
#####
# setting varié :
set-option -g status-utf8 on
set-window-option -g utf8 on
set -g default-terminal "screen-256color"
set -g history-limit 1000
setw -g window-status-current-bg blue
setw -g monitor-activity on
set -g visual-activity on
setw -g automatic-rename on

#On met les panneaux non actif en gris
set -g pane-border-fg colour244
set -g pane-border-bg default
# 
#On met le panneau actif en rouge
set -g pane-active-border-fg colour124
set -g pane-active-border-bg default
#  
#On met la barre de status en gris
set -g status-interval 60
set -g status-left-length 30
set -g status-left '#[fg=black](#S) #(whoami)@#H#[default]'
set -g status-fg colour235
set -g status-bg colour250
set -g status-attr dim
#   
# On surligne les fenêtres actives dans la barre de status en gris foncés
set-window-option -g window-status-current-fg colour15
set-window-option -g window-status-current-bg colour-0

C) Et la cerise sur le gateau :

Un petit script maison qui permet de lancer un terminator avec tmux,

voir lancer une application dans un tmux ( comme weechat ).

L’intérêt de ce script est que :

si vous avec par exemple weechat de lancé et que vous fermer la fenêtre du terminal en relançant le script il se positionne directement dans votre fenêtre de weechat
Si vous avez 2 fenêtres d'ouvertes ( l'une en shell, l'autre en weechat ) le script trouvera la bonne fenêtre tmux et l'ouvrira.

voila ce script : que j'ai placé ici : ~/.tmux/tmuxperr.sh ( son emplacement est important pour openbox :D )

#!/bin/bash
#########################################################################
#DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#Version 2, December 2004
#
#Copyright (C) 2015 Frédéric THOUIN
#Everyone is permitted to copy and distribute verbatim or modified
#copies of this license document, and changing it is allowed as long
#as the name is changed.
#
#DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
#0. You just DO WHAT THE FUCK YOU WANT TO.
#########################################################################
## Tmux Under Terminator : Version 0.9
#########################################################################
## Dependence : 
##      terminator
##      tmux
##      wmctrl
#########################################################################       
## Usage :
## tmuxperr.sh <sessionnane> <application>
## to launch a shell just put "bash" on application argument
#########################################################################

## Variable definition :
WINDOW_NAME="Viperr TMUX Terminal"
TERM_EXIST=$(wmctrl -l|grep "$WINDOW_NAME")
#############################################
## Test syntax :
if [[ -z $1 ||-z $2 ]]; then
    echo "Please give a session name"
    echo -e "\nExample : ./terminux.sh Viperr application"
    exit 0
fi
#############################################
## start point : 
# test if a terminal exist with your given name :
if [ -z "$TERM_EXIST" ]
#NO 
then
        # test if TMUX session exist :
        if [[ -z $(tmux list-session) ]]
            then
                # test if application argument is bash ( no session exist )
                if [[ "$2" = "bash" ]] 
                    then
                        # yes : launch new Tmux session under your shell :
                        terminator  -T "$WINDOW_NAME" -e "tmux -2 new-session -A -D -s $1" &
                    else
                        # no : launch your application under tmux :
                        terminator -T "$WINDOW_NAME"  -e "tmux -2 new-session -A -D -n $2 -s $1 $2 " &
                fi
            else
                # test if application argument is bash ( session exist )
                if [[ "$2" = "bash" ]]
                    then
                        # yes : test if window for your shell exist : 
                        if [[ -n $(tmux list-window -a -F '#{window_name}' | sed -n "/$LOGNAME/ s/\(.*\)@.*$/\1/p") ]]
                            then
                            #Yes : launch terminator and attach your shell windows ( if your have multi shell windows, this script attche only the first found )
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach -d -t $(tmux list-window  -a -F '#{window_name}|#{window_index}.#{pane_index}' | sed -n '/'$LOGNAME'/s/^.*|\(.*\)$/\1/p' | head -1) " &
                        
                            else
                                #No : Launch terminator with new shell window
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach-session \; new-window" &
                        fi
                    else
                        #No : test if window for your application exist : 
                        appli=$(tmux list-window -a -F '#{window_name}' | grep -i "$2"| cut -d " " -f 1)
                        if [[ -n  $appli ]]
                            then
                                #Yes : launch terminator and attach your application
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach -d -t $1:$appli" &

                            else
                                #No : Launch terminator with new window for your application
                                terminator -T "$WINDOW_NAME" -e "tmux -2 attach-session \; new-window $2" &
                        fi
                fi
        fi
#YES 
else
    # test if application argument is bash ( terminal open )
    if [[ "$2" = "bash" ]]
        then
            #yes : test if a shell windows exist : 
            if [[ "$LOGNAME" = $(tmux list-window -a -F '#{window_name}' | sed -n "/$LOGNAME/ s/\(.*\)@.*$/\1/p") ]]
                then
                    #yes : Select the First shell window
                    tmux -2 select-window -t "$1:$(tmux list-window -a -F '#{window_name}' | grep "$LOGNAME")"
                else
                    #No : Start new shell window
                    tmux -2 new-window -t "$1"
            fi

        else
            # NO : test if your application windows exist : 
            if [[ -n  $(tmux list-window -a -F '#{window_name}' | grep -i "$2") ]]
                then
                    #yes : Select your application window
                    tmux -2 select-window -t "$1:$(tmux list-window -a -F '#{window_name}' | grep -i "$2")"
                else
                    #no : Start new window for your application 
                    tmux -2 new-window -t "$1" -n "$2" "$2"
            fi
    fi
fi
#Focus on your terminal
wmctrl -a "$WINDOW_NAME"

D) Enfin on passe a l'intégration dans openbox :

Dans votre menu vous pouvez donc ajouter ceci pour le terminal :

                <item label="Terminal">
			<action name="Execute">
				<execute>~/.tmux/tmuxperr.sh Viperr bash</execute>
			</action>
		</item>

Et pour weechat par exemple ( ou tout autre application en cli :

               <item label="weechat">
			<action name="Execute">
				<execute>~/.tmux/tmuxperr.sh Viperr weechat</execute>
			</action>
		</item>

Enfin si vous avez un key binding dans votre openbox pour lancer votre terminal il faudra le modifier dans votre rc.xml

       Exemple chez moi la touche "Windows+t" nous donne :
    <keybind key="W-t">
      <action name="Execute">
        <startupnotify>
          <enabled>true</enabled>
          <name>Terminal</name>
        </startupnotify>
        <command>/home/fthouin/.tmux/tmuxperr.sh Viperr bash</command>
      </action>
    </keybind>

Have fun

source :

http://denisrosenkranz.com/tuto-personnalisation-de-tmux-via-son-fichier-de-configuration/

http://gerard.geekandfree.org/blog/2010/11/10/tmux-loutil-magique-pour-gerer-vos-terminaux-1/

http://gerard.geekandfree.org/blog/2011/05/24/tmux-loutil-magique-pour-gerer-vos-terminaux-partie-2/

http://tmux.sourceforge.net/

Channel irc : irc.freenode.net chan #tmux

Lire la suite»

jeudi 11 décembre 2014

Migration Viperr 5 to Viperr 6 ( own your risk )

Hello,

WARNING : BACKUP YOUR SYSTEM BEFORE !! USE ONW YOUR RISK

How to upgrade your viperr 5 to viperr 6 :

Update your system

yum update

Install fedup 

yum install fedup

Upgrade

fedup --network 21

After it , reboot your system and wait, wait, wait....

When it done create under root user this script vipup_5to6.sh :

#!/bin/bash
# Post Migration script
sed  -i 's/5/6/' /etc/yum.repos.d/viperr*
yum clean all
cd /etc/pki/rpm-gpg
rm RPM-GPG-KEY-Viperr*
wget http://www.coyotus.com/viperr/repo/Viperr/6/clefGPG/RPM-GPG-KEY-Viperr6-primary
for arch in i386 x86_64
  do
  ln -s RPM-GPG-KEY-Viperr6-primary RPM-GPG-KEY-Viperr-$arch
done
ln -s RPM-GPG-KEY-Viperr6-primary RPM-GPG-KEY-Viperr
yum distro-sync
yum install compton openbox-menu slim viperr-backgrounds-iso viperr-slimtheme viperr-hastur
package-cleanup --cleandupes

package-cleanup --orphans > ~/orphans_rpms
package-cleanup --problems
systemctl disable lxdm.service
systemctl enable slim.service 
sed -i 's/^\(GRUB_TERMINAL_OUTPUT="console"\)/#\1\nGRUB_THEME="\/boot\/grub2\/themes\/viperr\/theme.txt"/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
sed -i 's/current_theme       default/current_theme       viperr/' /etc/slim.conf
sed -i -e 's/Viperr release 05 (Vipera Cthulhu)/Viperr release 06 (Vipera Hastur) /g' /etc/fedora-release /etc/issue /etc/issue.net

cat > /etc/os-release <<EOF
NAME=Viperr
VERSION="6 (Vipera Hastur)"
ID=viperr
VERSION_ID=6
PRETTY_NAME="Viperr 6 (Vipera Hastur)"
ANSI_COLOR="0;31"
EOF
plymouth-set-default-theme viperr
/usr/libexec/plymouth/plymouth-update-initrd
echo " Your migration is over.
Verify the file ~/orphans_rpms and analyse it
If you want to have all new stuff : 2 solutions :
1) recomended :  create a new user
2) own your risk : copy all files from /etc/skel/* to your home directory
Have fun
"

change mod and launch it

chmod u+x vipup-5to6.sh ; ./vipup-5to6.sh

Have fun

Lire la suite»

mardi 25 novembre 2014

Prise de contrôle d'une session ouverte à distance de façon sécurisé

  • Problèmatique :

Les technologie de partage de bureau a distance sous linux éxiste ( VNC, Nomachine, X2go,... ) mais ne permette pas dé sécuriser correctement le poste physique prise sous contrôle.

Deux solutions s'offre à nous :

Soit on génère une autre session virtuel attacher a l’application de contrôle a distance ( VNC ). Cela reste sécurisé d'un point de vu poste physique, mais cela ne permet pas de récupérer les application déjà ouverte sur la session physique ( ce qui en entreprise ne permet pas de reprendre son travail a distance ). Cette solution n'est donc pas adaptée.

Soit on prend la session physique, mais losque l'on fait ça, au moment ou vous déverrouillez la session cela déverrouille aussi le poste physique, car les outils de controle à distance ( VNC, Nomachine, X2go ) déporte l'affichage sur le poste client. De plus vous ne pouvez pas réellement et correctement redimensionner la résolution de lécran.

  • Le but est donc :

Pouvoir récupérer une session verrouillée d'un poste physique ( qui peut etre en dual screen, cad avec une grosse résolution ) via un poste distant, qui interdit l'affichage video sur le poste physique et en plus redimensionne la résolution de la session pour qu'elle corresponde à l'écran du poste distant.

  • Mise en place :

Mon astuce va travailler avec le logiciel Nomachine ( je pense qu'il pourait travailler aussi avec X2go).

J'ai configuré Nomachine pour qu'il écoute sur le port 3389 ( pour des raisons de firewall dans mon entreprise ).

A l'ouverture de ma session j'ai ce script qui se lance :

         #!/bin/bash
while :
        do
        netstat -ant | grep '172.16.121.13:3389.*ESTABLISHED' > /dev/null
        if [[ "$?" = "0" ]]
                then
                        if [[ -f ~/.screenlayout/conected ]]
                                then
                                        touch ~/.screenlayout/conected
                                else
                                ~/.screenlayout/Off.sh
                                touch ~/.screenlayout/conected
                                rm ~/.screenlayout/disconected
                        fi
                else
                        if [[ -f ~/.screenlayout/disconected ]]
                                then
                                        touch ~/.screenlayout/disconected
                                else
                               ~/.screenlayout/double.sh
                                touch ~/.screenlayout/disconected
                                rm ~/.screenlayout/conected
                        fi
                fi
        sleep 10
        done

Ce script va surveiller toute les 10 secondes si une connexion est établie ou non sur le port 3389. Si c'est le cas je désactive les sorties vidéos physiques de mon poste physique et je génère un écran virtuel, tout cela via ce script :

#!/bin/sh
xscreensaver-command -lock
xrandr --addmode VIRTUAL1 1280x1024
xrandr --output eDP1 --off --output DP1-3 --off --output VIRTUAL1 --mode 1280x1024 --pos 0x0 --rotate normal --output DP1 --off --output HDMI2 --off --output HDMI1 --off --output DP1-3 --off --output DP1-2 --off --output DP1-1 --off

Je génère aussi un petit fichier vide pour évité de relancer toutes les 10 secondes le script xrandr. Losque que je ferme le client distant ( de nomachine ) le script auto s’aperçoit en 10sec que la connexion sur le port 3389 est fermé et il lance ce script :

#!/bin/sh
xscreensaver-command -lock
xrandr --output VIRTUAL1 --off --output eDP1 --mode 1920x1080 --pos 0x0 --rotate normal --output DP1 --off --output HDMI2 --off --output HDMI1 --off --output DP1-3 --mode 1680x1050 --pos 1920x0 --rotate normal --output DP1-2 --off --output DP1-1 --off

Désactivant l'écran virtuel et remettant en place mon dual screen sur le poste physique et générant un fichier témoin pour éviter de renlancer xrandr toutes les 10secs.

Et voila le tour est joué.

Bien-sur ce script est à adapter a vos besions.

Merci a Core Blah pour son savoir, et sa façont de donnée des solution sans les donner :

Voila les commandes tu dois pouvoir le faire.

Lire la suite»

jeudi 17 mai 2012

Script Cron pour Minecraft

Minecraft étant une application java ! il est parfois important de relancer le serveur ( car il monte en charge inutiliement) Mais comment relancer un serveur si il y a du monde de connecté !! c'est pas classe !

donc voila un petit script maison qui permet de vérifier si des utilisateurs sont connectés, et le cas échéant surveiller les logs du serveur pour relancer le serveur une fois vide de joueurs.

#!/bin/bash
#définition du path log :
logfile=/minecraft/server.log
ipserv="192.168.1.10"
port="25565"
netstat -ant | grep "$ipserv:$port.*ESTABLISHED"
if [[ $? == 0 ]]
       then   
               echo "$(date) il y a du monde sur Minecraft en attende de la déconection des joueurs" >> /var/log/messages


               while   inotifywait -q -e modify  $logfile 
               do
                       if tail -n1 $logfile | grep '\[INFO\] \<..*\> lost connection'
                              then
                               echo "$(date) déconection des joueurs Ok" >> /var/log/messages
                               echo "$(date) redémarage de Minecraft" >> /var/log/messages
                               while netstat -ant | grep "$ipserv:$port.*ESTABLISHED" 
                                        do
                                        echo "$(date) waitting deconection" >> /var/log/messages
                                        sleep 60
                                done
                                (invoke-rc.d minecraft restart && wait )  
         echo "$(date) rédamarage de Minecraft Ok" >> /var/log/messages
                               break
                       fi
               done
       else   
               echo "$(date) redémarage de Minecraft" >> /var/log/messages
               (invoke-rc.d minecraft restart && wait )
               echo "$(date) rédamarage de Minecraft Ok" >> /var/log/messages

fi

Merci a frédéric P pour sont aide sur inotifywait et l'idée d'utiliser netstat

Lire la suite»

jeudi 19 avril 2012

Monitorix

Cela faisait longtemp que je voulais un soft de monitoring sur mon serveur maison, sans non plus installer une usine type Nagios, mais qui me faisait tout de même une interface WEB pour surveiller le serveur à distance.

Avant j'utilisais multitail, glances, htop le tout en ssh via une session screen mais bon voila, c'est pas tip top et on a pas toujours une connexion ssh disponible.

Et voila que je tombe sur un article parlant de monitorix.

Facile à installer, à configurer, possibilité de mettre un htaccess pour bien sécuriser le tout.

Bref que du bonheur.

Exemples de screenshot :

site du projet :

monitorix

Lire la suite»

jeudi 19 janvier 2012

Minecraft Serveur At home

Et oui, je suis un Geek, je joue à MineCraft !

Pire que tout !! je joue seul mais sur un serveur perso !! WTF !!

Cela mérite une petite explication :

Configuration du client :

Je joue sur un eeePc : ASUS 1215B donc une configuration assez faible graphiquement et aussi au niveau du CPU.

J'ai testé de mettre Minecraft en condition minimal mais le FPS n'était pas trop au rendez-vous ( 15FPS max , même avec la version final 1.0).

Là, folie m'a pris de faire un test en créant un serveur Perso et ô bonheur je suis passé au dessus des 24 FPS \o/

Configuration du serveur :

Platforme : NEC Versa S970

CPU : Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz

RAM : 2 Go

System : Ubuntu 10.04 en mode texte. (une migration vers un serveur Fedora est en projet)

Installation et importation de la map solo :

On commence bien-sur par récupérer la version serveur de minecraft sur le site de minecraft

Et on la place dans un répertoire de son choix ( chez moi /media/minecraft )

il est maintenant possible de lancer le serveur sur le serveur avec cette commande :

java -Xmx1024M -Xms1024M -jar /media/minecraft/minecraft_server.jar nogui

Importation de la map perso : il suffit ce copier depuis votre serveur solo le répertoire comportant le monde de votre sauvagarde et la copier sur le serveur dans un répoertoire.

exemple :

scp -r ~/.minecraft/NOM_MAP user@ADRESSE_SERVEUR:/$MINECRAFT-SERVER_PATH/

Le nom de la map ( le répertoire contenant le monde ) doit être indiqué dans le fichier : /$MINECRAFT-SERVER_PATH/server.properties

level-name=NOM_MAP

Mise en place de Minecraft-server en mode service init

Cela évitera de lancer le serveur à la main quand on veut jouer.

voici mon script init :

#!/bin/bash
# /etc/init.d/minecraft

#Settings
SERVICE='minecraft_server.jar'
USERNAME="root"
MCPATH='/media/minecraft/'
BACKUPPATH='/media/minecraft/minecraft.backup/'

ME=`whoami`
as_user() {
  if [ "$ME" == "$USERNAME" ] ; then
    bash -c "$1"
  else
    su - $USERNAME -c "$1"
  fi
}

mc_start() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "Tried to start but $SERVICE was already running!"
  else
    echo "$SERVICE was not running... starting."
    cd $MCPATH
    as_user "cd $MCPATH && screen -dmS minecraft java -Xmx512M -Xms512M -jar minecraft_server.jar  nogui"
    sleep 7
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICE is now running."
    else
      echo "Could not start $SERVICE."
    fi
  fi
}

mc_saveoff() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
   then
      echo "$SERVICE is running... suspending saves"
      as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                sync
      sleep 10
   else
                echo "$SERVICE was not running. Not suspending saves."
   fi
}


mc_saveon() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
   then
      echo "$SERVICE is running... re-enabling saves"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
   else
                echo "$SERVICE was not running. Not resuming saves."
   fi
}

mc_stop() {
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE is running... stopping."
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'"
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
                sleep 10
                as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
                sleep 7
        else
                echo "$SERVICE was not running."
        fi
        if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
        then
                echo "$SERVICE could not be shut down... still running."
        else
                echo "$SERVICE is shut down."
        fi
}

mc_update() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
    echo "$SERVICE is running! Will not start update."
  else
    MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\ | cut -d \" -f 2`
    as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
    if [ -f $MCPATH/minecraft_server.jar.update ]
    then
      as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
      echo "Minecraft successfully updated."
    else
      echo "Minecraft update could not be downloaded."
    fi
  fi
}

mc_backup() {
  if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
  then
#    echo "$SERVICE is running! Will not start backup."
#  else
    echo "Backing up minecraft data"
    if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"` ]
    then
      for i in 1 2 3 4 5 6
      do
        if [ -d $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i ]
        then
          continue
        else
          as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`-$i"
          break
        fi
      done
    else
      as_user "cd $MCPATH && cp -r world $BACKUPPATH/world_`date "+%m.%d.%Y"`"
    fi
    echo "Backing up the minecraft server executable"
    if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar" ]
    then
      for i in 1 2 3 4 5 6
      do
        if [ -f "$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar" ]
        then
          continue
        else
          as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`-$i.jar\""
          break
        fi
      done
    else
      as_user "cd $MCPATH && cp minecraft_server.jar \"$BACKUPPATH/minecraft_server_`date "+%m.%d.%Y"`.jar\""
    fi
  fi
  echo "Backup complete"
}

#Start-Stop here
case "$1" in
  start)
    mc_start
    ;;
  stop)
    mc_stop
    ;;
  restart)
    mc_stop
    mc_start
    ;;
  update)
    mc_stop
    mc_backup
    mc_update
    mc_start
    ;;
  backup)
    mc_saveoff
    mc_backup
    mc_saveon
    ;;
  status)
    if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
    then
      echo "$SERVICE is running."
    else
      echo "$SERVICE is not running."
    fi
    ;;

  *)
  echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart}"
  exit 1
  ;;
esac

exit 0

Il faut maintenant configurer ce service pour qu'il se lance au démarrage :

update-rc.d minecraft defaults

Cerise sur le gateau !

J'ai donc un serveur en place ! il est lancé automatiquement au démarrage du système. Et si je mettais en place une carte type google map du mon monde !

Pour cela je vais utiliser overviewer.

Voici un exemple de rendus : http://overviewer.org/example/s

Une fois avoir récupérer et installer overviewer, il faut penser à récupérer un texture pack depuis le répertoire du client et le placer sur le serveur.

Et enfin on peux lancer le rendus :

/usr/local/bin/overviewer.py --rendermodes='lighting,cave,night,spawn' /media/minecraft/p2/ /var/www/minecraft --textures-path /media/minecraft/MAPPER/overviewer-Minecraft-Overviewer-a690771/

bien-sur il faut aussi un serveur Web fonctionnel.

il ne reste plus qu'a mettre dans un script cette ligne de commande, la mettre dans une tache cron 1 fois par jour et le tour est joué.

Lire la suite»

Live-CDs Fedora francisés

Je vais reprendre en partie un post de DarthWound qui avec Casper est à l'origine de la francisation des Live-CD Fedora. Le post original que je vous conseil de suivre est là : LiveCDs Fedora en français.

Le problème est que les Live-CDs Fedora sont de base en anglais, et lorsqu'on les installe sur le disque dur, ceux-ci ne sont pas en français après l'instalation ( je fais cours). Il y a certes des façons de détourner ces problèmes mais elles ne sont pas innées surtout pour un nouvel utilisateur.

Il sera donc proposé dans ce post la liste des Live-CD francisés. Je vous conseille de passer part les fichiers Torrent et si possible de garder le seed une fois le téléchargement finit. Plus on sera nombreux à partager les isos, plus vite les téléchargements se feront.

I - Référencement des liveCDs disponibles :

Fedora 16 Gnome i686, par C@sp€r

Torrent: Fedora-16-Gnome-x86_64-FR.torrent

Fedora-16-Gnome-i686-FR

Fedora-16-Gnome-i686-FR.CHECKSUM

Fedora 16 Gnome x86_64, par slobberbone

Torrent: Fedora-16-Gnome-x86_64-FR.torrent

Fedora-16-Gnome-x86_64-FR.iso

Fedora-16-Gnome-x86_64-FR.CHECKSUM

Fedora 16 KDE i686, par penthium2

Torrent: Fedora-16-KDE-i686-FR.torrent

Fedora-16-KDE-i686-FR.iso

Fedora-16-KDE-i686-FR.CHECKSUM

Fedora 16 KDE x86_64, par Did

Torrent: Fedora-16-LXDE-i686-FR.torrent

Fedora-16-KDE-x86_64-FR.iso

Fedora-16-KDE-x86_64-FR.CHECKSUM

Fedora 16 LXDE i686, par DarthWound

Torrent: Fedora-16-LXDE-i686-FR.torrent

Fedora-16-LXDE-i686-FR.iso

Fedora-16-LXDE-i686-FR.CHECKSUM

Fedora 16 LXDE x86_64, par Did

Torrent: Fedora-16-LXDE-x86_64-FR.torrent

Fedora-16-LXDE-x86_64-FR.iso

Fedora-16-LXDE-x86_64-FR.CHECKSUM

Fedora 16 Xfce i686 et x86_64

Xfce contient un paquet qui déclenche une erreur critique à l'heure où ce post a été rédigé.

Serveur Alternatif ( Merci a Did ) :

http://alez.fr/fedora_FR.php

Lire la suite»

jeudi 12 janvier 2012

shaarli

Un outil très agréable pour stocker et mettre en ligne nos liens favoris trouvés sur internet : c'est Shaarli.

Son créateur est SebSauvage connu généralement pour son site : sebsauvage les trucs qui m'énervent.

Le site de Shaarli : wiki shaarli

Il permet avant tout de mettre en une page Web les liens que l'on trouve sur le Net, les classer par tags, et la possibilité d'avoir des liens strictement personnels.

Voila ses fonctionnalitées :

Minimalist design (simple is beautiful)

FAST

Easy to use: Single button in your browser to bookmark a page

Save url, title, description (unlimited size)

Classify links with tags (with autocomplete)

Bookmarks can be public or private

Browse links by page

Filter by tags

Full text search

Tag cloud

Picture wall (which can be filtered by tag or text search)

Permalinks

Automatic thumbnails for various services (imgur, imageshack.us, flickr, youtube, vimeo, dailymotion…)

RSS and ATOM feeds (which can be filtered by tag or text search)

PubSubHubbub protocol support

No-brainer installation: Drop the files, use it.

No database required (data stored in a single file ; easy to backup)

Compact storage (1315 links stored in 150 kb)

Can import/export Netscape bookmarks (for import/export from/to Firefox, Opera, Chrome, Delicious…)

Automatic ban of IP address if too many failed logins

Protected against XSRF, session cookie hijacking… and of course SQL injection (since there's no SQL database)

FeedBurner/Google FeedProxy annoying parameters in URL (?utm_source…) are removed automatically

Shaarli is a bookmarking application, but you can use it for micro-blogging (like Twitter), a pastebin, an online notepad, etc.

You will be automatically notified by a discreet popup if a new version is available

Pages are customisable (using simple RainTPL templates)

Téléchargement :

http://sebsauvage.net/files/shaarli.zip

Ce lien est un lien permanent vers la dernière version, et l'auteur modifie sont contenue à chaque changement de version.

Installation :

Il suffit d'avoir sur son serveur un Web-Server (exemple Apache2) avec PHP 5.1 au minimum, PHP 5.2 étant plus agréable.

De créer un répertoire pour shaarli et décompresser le contenu.

Il suffit après de lancer une première fois le site , passer la phase de configuration (login,passeword,time zone) et le tour est joué.

Utilisation :

Une fois Shaarli configuré, aller sur le lien de votre site, identifiez-vous puis rendez vous dans la section tools puis glisser le bouton : SHAARE LINK dans votre navigateur internet ( compatible : Firefox, Opera, Chrome et Safari ).

Une fois le bouton Shaarli dans votre bar de favoris, lorsque vous surfez sur un site que vous voulez partager, il suffira de cliquer sur le bouton : Shaare Link de votre bar de favoris, un pop up s'ouvrira et il suffit de renseigner les tag et un commentaire sur ce lien.

Pour rendre un lien PRIVE n'oubliez pas de cocher la case : PRIVATE

Pour lire ses liens privés il suffit de s’authentifier sur son site shaarli et ils apparaîtront.

Conclusion :

J'utilise Shaarli pour un usage perso, il me permet d'avoir rapidement et de n'importe où des petits liens que j'ai trouvés sur le Net. Certains de ces liens m'étant perso j'utilise bien entendu l'option PRIVATE.

Un exemple d'une utilisation de Shaarli est bien-sur le Shaarli de sebsauvage.

Lire la suite»

jeudi 29 septembre 2011

Archivage des fichiers cachés via TAR

Il est parfois fort utile d'archiver des fichiers cachés ( rien que nos fichier de configuration de nos petits softs adorés dans notre home directory )

Comme vous le savez les fichiers cachés commencent par un "."

Premier réflexe :

cd ~
tar czvf archive-dotfiles.tar.gz .*

Et la c'est le drame, TAR archive tous les fichiers de mon home....

Mais pourquoi tant de haine !!!! Et bien il faut réfléchir un petit peu à la structure même d'un répertoire et se souvenir des notions chemin relatif et absolut; et surtout, du répertoire courant (.) et répertoire parent (..)

Pour bien comprendre la commande d'avant : en mettant .* il devient maintenant évident que les fichier "." et ".." seront interprété et mis en archive par TAR. Hors si TAR prend le répertoire "." en archive, il va obligatoirement prendre son contenue ( TAR est récursif ) donc il prendra en plus des fichiers caché les autres fichiers. et il en ira de même avec l'interprétation du fichier "..".

Comment faire ?

TAR a la possibilité d'exclure des fichiers, et c'est la solution à mettre en place. Notre commande sera donc de la forme :

cd ~
tar czvf archive-dotfiles.tar.gz --exclude . --exclude .. .*

Lire la suite»

jeudi 1 septembre 2011

Migration vers boot express card SSD

Quel bonne nouvelle de voir que le kmod-staging était de retour pour ma fedora 15 et donc le module kernel phison. Celui-ci me permet enfin d'utiliser mon expresscard verbatim SSD 16Go. Et là l'idée me prends de migrer ma partition racine (20Go, ocupé 9.3Go) qui est sur mon HDD SATA 5200rpm 500Go vers l'express card.

Problématique

Mon DELL Studio 1737 ne reconnait pas mon expresscard comme périphérique bootable, donc grub ne le voit pas non plus. Mon ExpressCard SSD demande obligatoirement un module kernel spécifique ( phison ) contenu dans les kmod-staging.

Etat des lieux

voici actuelement la séquance de boot de mon system : grub :

title Fedora (2.6.40.3-0.fc15.x86_64)
        root (hd0,2)
        kernel /boot/vmlinuz-2.6.40.3-0.fc15.x86_64 ro root=UUID=d5cb1ae8-748b-4af6-94cb-92188effabb7 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 rhgb quiet
        initrd /boot/initramfs-2.6.40.3-0.fc15.x86_64.img
title Fedora (2.6.40-4.fc15.x86_64)
        root (hd0,2)

grub récupère le kernel et initramfs sur la partition /dev/sda3.

Principe du futur boot

Utilisé la partition STATA /dev/sda3 qui contient grub et les fichiers du kernel comme partition de boot utiliser pour grub et le chargement du noyau et indiquer où est la nouvelle racine du systeme. A la fin du boot la partition /dev/sda3 ne sera pas montée.

Préparation de l'enviroment de travail

Pour bien faire il me faut un live USB qui contient le module phison.

Avec l'aide du soft : Fedora LiveUSB creator je crée donc une distrib fedora 15 avec une persistance des données.

Je boot dessus et j'intègre les dépôts RPM-fusion afin d'installer le kmod-staging.

Hop cela installe en même temps le dernier kernel, et à partir de maintenant le module phison est monté quand le ssd est présent au démarage.

Génaration de la racine SSD

Reboot sur liveUSB et préparation de la futur racine :

une fois booté sur le liveUSB je monte la racine SATA ( /dev/sda3 ) dans /source, et la futur racine SSD ( /dev/sdc1 ) dans /dest

Copie de la racine

cp -a /source/* /dest

Préparation au reboot

INITRD

Là un point important qu'il faut bien prendre en compte est que l'image initramfs-2.6.40.3-0.fc15.x86_64.img actuelle placer sur /dev/sda3 ne contient pas le module phison, donc de base le boot du kernel ne peut pas voir l'expressCard. Il faut donc créer un initramfs avec le module phison. Biensur cette image devra etre dans le répertoire /boot de /dev/sda3 ( actuelement monté dans /source)

 mkinitrd --preload phison -f /source/boot/initramfs-2.6.40.3-0.fc15.x86_64ssd.img 2.6.40.3-0.fc15.x86_64

Cette commande est donc composé de :

--preload phison : indique qu'un module complémentaire doit etre intégré à l'image.

-f /source/boot/initramfs-2.6.40.3-0.fc15.x86_64ssd.img : indique le nom de l'image à créer

2.6.40.3-0.fc15.x86_64 : indique la version du kernel à utiliser pour générer l'initrd.

Nous somme donc avec une image initrd contenant le module phison, et une image ne contenant pas ce module.

Je rajoute donc une nouvelle ligne dans le grub.conf de la partition /dev/sda3 (/source/boot/grub.conf) :

title Fedora SSD (2.6.40.3-0.fc15.x86_64)
        root (hd0,2)
        kernel /boot/vmlinuz-2.6.40.3-0.fc15.x86_64 ro root=UUID=6530d8a4-7406-4163-9735-64c4b9175b83 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=fr_FR.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=fr-latin9 rhgb quiet
        initrd /boot/initramfs-2.6.40.3-0.fc15.x86_64ssd.img

J'indique donc à grub que ses fichiers seront du hd0,2 (/dev/sda3) et que la racine du système n'est plus sur UUID du /dev/sda3, mais sur l'UUID de l'expresscard (/dev/sdb1).

Et biensur je lui dis d'utiliser le initrd contenant le module phison ( /boot/initramfs-2.6.40.3-0.fc15.x86_64ssd.img ).

FSTAB

Il faudra bien-sur modifier le fstab de la nouvelle racine ( actuellement monter dans /dest/etc/fstab) et changer l'UUID de /dev/sda3 pour celui de /dev/sdc1.

UUID=6530d8a4-7406-4163-9735-64c4b9175b83 /                       auto    defaults        1 1

SELINUX

Puis qu'on a effectué une simple copie de la racine SATA vers la racine SSD il faut obligatoirement préparer le premier boot en SSD pour que SELINUX relabèlise les fichiers de la nouvelle racine.

Dans le cas contraire le système de démarrera pas car SELINUX refusera de donner accès aux fichiers système ( une solution par très propre est de rajouter selinux=0 dans la ligne du kernel dans grub.conf A NE PAS FAIRE).

Pour cela il faut créer un fichier .autorelabel à la racine du du futur filesystem racine. donc ici :

touch /dest/.autorelabel

Lors du boot, selinux voyant se fichier, il tentera de relabéliser le filesystem, cela peut prendre un certain temps, et dans mon cas j'ai du rebooter 2 fois pour que la relabélisation soit complète.

résumer

On a donc copier la racine sur le ssd, générer un initrd spécifique avec le module phison ( prise en charge de l'expresscard) copier dans le /boot (de la partition SATA), ajouter une entré dans le grub.conf (de la partition SATA), modifier le fstab ( de la partition SSD), préparé la racine SSD pour que selinux relabélise le file system)

REBOOT

C'est le moment de prier crom, car on va rebooté le système. au reboot on indique bien à grub de booter sur l'entrée Fedora SSD (2.6.40.3-0.fc15.x86_64) et la magie s'opère.

Et le futur ?

La dificulté de tout cela sera dans les mise à jours du kernel (c'est pas tout les jours), et de grub ( c'est encore plus rare).

Pour les mise à jours du kernel il ne faudra simplement pas oublier de régénérer un initrd pour la nouvelle version de kernel, copie le nouveau kernel et l'initrd_ssd dans le repertoire /boot de la partition /dev/sad1. et modifier le grub.conf dans la partition /dev/sda3.

Pour les mise a jours de grub, je vois pas trop, à la limite je ne le metterais pas à jours.

Conclusion

temps de boot

voila mon temps de boot avant :

Sep  1 08:12:35 dellp2 systemd[1]: Startup finished in 1s 457ms 538us (kernel) + 7s 17ms 520us (initrd) + 38s 393ms 430us (userspace) = 46s 868ms 488us.

et après :

Sep  1 11:06:29 dellp2 systemd[1]: Startup finished in 1s 415ms 263us (kernel) + 11s 357ms 679us (initrd) + 20s 101ms 712us (userspace) = 32s 874ms 654us.

soit un gain de 14secondes. ce qui est bien mais pas top.

vitesse des disques

hdparm -Tt /dev/sda
/dev/sda:
 Timing cached reads:   3204 MB in  2.00 seconds = 1603.48 MB/sec
 Timing buffered disk reads: 224 MB in  3.04 seconds =  73.71 MB/sec

hdparm -Tt /dev/sdb
/dev/sdb:
 Timing cached reads:   3312 MB in  2.00 seconds = 1657.42 MB/sec
 Timing buffered disk reads: 328 MB in  3.02 seconds = 108.74 MB/sec

Soit un gain de 35MB/sec ce qui là n'est pas négligeable, et l'ouverture des applications est réellement plus rapide.

Pour rappelle l'expresscard Verbatim SSD 16Go sur mon pc est conecté en PCIexpress 1X !!

Donc cela m'ouvre la porte vers l'envie d'acheter un disque SATA SSD qui là donnera bien plus de performances.

Lire la suite»

vendredi 26 août 2011

sécurisation d'une connexion ssh

Un simple logiciel est c'est "finit", certe cela ne fait pas tout mais ca permet de stopper les attaques en brute de force. j'ai nommé fail2ban

Le principe est simple, il regarde les fichiers de log sur les erreurs de login, et si une ip se trompe trop de fois dans une authentification SSH fail2ban demande à Shorewall de modifier dynamiquement NETFILTER pour ajouter aux règles du firewall l'IP incriminée en lui interdisant l’accès.

Instalation :

yum install fail2ban

Les fichiers de conf :

/etc/fail2ban/fail2ban.conf

Permet de configurer le comportement general de fail2ban.

/etc/fail2ban/jail.conf



Permet de configurer les services surveillées par fail2ban, indiqué la durée de bannissement, etc..

Lire la suite»

mardi 16 août 2011

Masse replace !

Il est parfois utile de faire des remplacements d'une occurrence dans un fichier ! là ça reste pas trop dur grace a vim :

:%s/occurrence/remplacement/g

Mais comment farie quand on veut modifier une occurrence qui est dans plusieurs fichiers par une autre ! Hé bien là, shell est mon ami :

grace a la commande sed :

( merci à tshirtman via google+ et son commentaire)

sed -i s/occurence/remplacement/g *

ou bien ( mais c'est pas top )

 for i in `grep -l occurrence *` ; do vim -c '%s/occurrence/remplacement/g' -c 'wq!' $i; done

Lire la suite»

jeudi 11 août 2011

Man Of Man @ HOME

Dans un ancien article je vous avais parler du super Man of Man. Et bien j'ai décidé de l'auto héberger.

Apres une petit configuration DNS en utilisant un CNAME home.penthium2.org vers mon enregistrement DynDNS, l'ouverture du port qui va bien sur ma livebox ( ARG ) voici donc : HOME MAN OF MAN

Lire la suite»

vendredi 29 juillet 2011

La joie du scripting !!

voici un petit site très agréable pour aller plus loin dans le scripting sous shell bash !

Attention ca pique : BASH

Lire la suite»

mercredi 13 juillet 2011

Cerveauuuuuu

Inutile donc indispensable !! faire son petit Zombi maison :D

Si vous êtes curieux et voulez voir comment ressemble à un zombie, vous pouvez créer un zombie avec ce programme c:

Source code:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main ()
{
  pid_t child_pid;

  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}

Enregistrez-le sous zombie.c, le compiler avec:

gcc zombie.c -o zombie

et exécutez-le avec:

./zombie

Maintenant, vérifier la sortie de cette commande (en 1 minute) dans une autre fenêtre:

ps -el | grep " Z "

Lire la suite»

mardi 12 juillet 2011

Man of MAN !!!

Fait par l'un des meilleurs membres du forum fedora-fr.org
voila UNE référence à ne pas louper !!!! http://marionpatrick.free.fr/

Lire la suite»

configuration du clavier en AZERTY pour l'utilisation de VINO

Vino est un logiciel permetant la prise de controle à distance du bureau d'un utilisateur. Hors depuis Fedora 15 je rencontrais un petit problème de clavier !

Sur la machine physique le clavier était en AZERTY mais dans la fenêtre de controle à distance le clavier était en QWERTY.

Pour résoudre cela il va faloir créer un script qui sera lancer à l'ouverture de session utilisateur.

créer un script : vino.sh

setxkbmap fr

puis le rendre executable :

chmod u+x vino.sh

puis lancer la commande

gnome-session-properties

Et ajouter le script.

cela génère un fichier dans : ~/.config/autostart nommé vino.sh.desktop

[Desktop Entry]
Type=Application
Exec=/home/penthium/vino.sh
Hidden=false
X-GNOME-Autostart-enabled=true
Name[fr_FR]=vino.sh
Name=vino.sh
Comment[fr_FR]=reconfiguration du clavier pour vino
Comment=reconfiguration du clavier pour vino

Le tour est joué ! a chaque ouverture de session le clavier est remis en phase pour que les connexions vino soit en azerty \o/

Lire la suite»

vendredi 10 juin 2011

guide du surffeur fou en init 3 (ou La méthode Casper)

Ha les joies de l'init 3 !

une mauvaise mise à jour ! PAF init 3

un soft qui explose gnome 3 ! PAF init 3

Mais alors ! comment faire pour surffer et chatter avec la communauté dans ces cas là ?

Cet article va décrire plusieurs petits softs vous permettant de survivre en milieu hostile ( ou pas ).

Cet article va aussi vous permettre par exemple d'utiliser une connection SSH pour accéder à vos outils de surf et chat quand vos voyager et que vous ne pouvez pas avoir vos soft de chat, mais que vous pouvez avoir une conexion SSH.

Voila donc 4 logiciels important :

1) SCREEN

Certainement le principal lors de l'utilisation de conexion SSH.

Un article est déja present sur ce site, donc je ne reviendrais pas trop dessus. (cf Article :Screen ).

Il permet surtout de garder les logiciels ouvert dans ses session, meme quand votre conexion SSH se coupe ou que vous la coupiez vous meme (dans ce cas la je vous conseil l'utilisation de la combinaison : "Ctrl+a x", elle permet de locker la session en cours).

2) ELINKS

elinks

Le navigateur WEB sous console. il existe d'autres navigateurs comme lynx, mais j'ai une préference pour elinks. Son installation est facile puisse qu'il est déjà intégré au depot fedora :

su -c "yum install elinks"

Le lancement est aussi simple :

elinks
ou 
elinks fedora-fr.org

L'utilisation n'est pas trop compliquer une fois qu'on a compris qu'il faut valider le champs qui nous interesse avec la touche ENTREE.

On poura se déplacer dans une page avec la touche ESPACE pour descendre et Ctrl-B pour monter. Mais la MOLETTE de la sourie marche très bien.

pour plus d'info : elink Keys

3) IRSSI

IRSSI

Irssi est un client IRC, je ne referais pas une documentation sur ce logiciel mais je vous invite plutot à aller voir le wiki fedora qui est très bien fait : wiki fedora Irssi

Je rajouterais juste l'explication de l'installation du script Nicklist.pl et la connection SSL vers un serveur qui l'autorise.

Nicklist.pl : ce script permetera d'avoir une "barre" sur le coté avec la liste des utilisateurs connecter au chan.

installation :
$ mkdir -pv $HOME/.irssi/scripts/autorun && cd $HOME/.irssi/scripts
$ wget http://www.irssi.org/scripts/scripts/nicklist.pl
$ cd autorun
$ ln -sv ../nicklist.pl
configuration et utilisation :

changer la largeur le la bare des speudo :

/set nicklist_width <number>

Faire que la bare de speudo soit lancer au démarage de Irssi:

/set nicklist_automode screen

Déplacement dans la bare de speudo :

/nicklist scroll <+|-number>

ex :

/nicklist scroll -10

Il est possible d’assigner des raccourcis clavier :

/bind something command nicklist scroll -10 
/bind something-else command nicklist scroll +10
Conexion SSL :

Pour avoir une conection SSL qui fonction il faudra avant tout installer les références aux certificats racines :

su -c "yum install ca-certificates"

Puis dans le fichier de configuration de irssi, dans la section serveur on ajoute :

use_ssl = "yes";
ssl_verify = "yes";

soit par exemple pour le serveur freenode :

servers = (
  {
    address = "chat.freenode.net";
    chatnet = "freenode";
    port = "7000";
    term_type = "uth-8";
    use_ssl = "yes";
    ssl_verify = "yes";
    autoconnect = "yes";
  }
);

4) MCABBER

mcabber

mcabber est un client Jabber incluant les fonctionnalités suivantes : support de SSL, journalisation des discussions, complètement des commandes, déclenchement d'actions externes.

installation :
su -c "yum install mcabber"
configuration :

Vous pouvez lancer mcabber sans fichier de configuration, il faudra alors paramétrer les options manuellement. Pour créer un fichier de configuration rapidement, copiez et renommez le fichier exemple :

mkdir ~/.mcabber
chmod 0700 ~/.mcabber
cp /usr/share/doc/mcabber-0.10.1/mcabberrc.example ~/.mcabber/mcabberrc

Ensuite, éditez le fichier. Renseignez votre login et le serveur Jabber et ajouter l'option : set ssl_ignore_checks = 1

Exemple de fichier de conf :

set jid = foo@jabber.fr
set password = "foo"
set server = im.apinc.org
set ssl_ignore_checks = 1
set nickname = foobar
...

Il y a bien sur d'autre setting disponible comme les alias, mais pour cela je vous invite à aller sur le site de mcabber : wiki mcabber

utilisation :

La fenêtre mcabber est divisée en 4 zones. Le roster, alias buddylist (liste de contacts), se trouve à gauche, et la zone de discussion, ou chat buffer, à droite. La zone de commandes est au bas de la fenêtre, sous la zone d'informations. Deux barres d'état entourent la zone d'informations. La barre d'état inférieure est la "barre d'état principale" et reflète l'état général du logiciel (votre état, en somme). L'autre barre est la "barre d'état de la discusion" et affiche l'état du contact actuellement sélectionné.

Pour afficher l'historique des discussions, vous devrez rentrer en mode discussion (Chat Mode). Pour activer ce mode, appuyez sur la touche Entrée, pour en sortir appuyez sur la touche ESC. Envoyer un message permet aussi d'activer le mode discussion.

Utilisez les touches PageUp/PageDown pour vous déplacer dans le roster.

Je vous invite à lire le manuel ( en anglais ) pour prendre connaissance de toutes les fonctionnatlités : Manuel mcabber

Conclusion

Avec c'est 4 outils vous êtes près à pouvoir surffer, chatter, même quand votre interface graphique vous fait défaut, vous permettant ainsi de trouver une solution à votre problème ( en interrogeant par exemple la communauté Fedora sur irc ).

Cela peut aussi vous permettre de chatter surffer dans une connexion SSL sous putty...

Bref il est clair que ce ne sont pas des outils qu'on utilise tous les jours ( quoi que.....) mais les avoir présent sur son système et déjà paramétré pourra dans certain cas vous sauver la vie ( enfin celle de votre système)...

Je remercie Casper pour toutes les infos et aide sur la config et le partage et ses connaissances sur ces logiciels.

Lire la suite»

- page 1 de 2