Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] - script afficher les deux infos

11 réponses
Avatar
Nahliel Steinberg
Bonjour,

J'ai un script qui me déploie des clés automatiquement sur mes environnements le voici :

#!/bin/bash
a=0
for IP in `cat iptest`
do
a=`expr $a + 1`
cat id_rsa.pub | ssh root@$IP "cat - >> .ssh/authorized_keys"
echo -e "\033[1;32m $a - copie de la clé sur $IP [OK] \033[0m"
done

le fichier iptest qui est parsé contient la liste des adresses IP des machines uniquement
comme ceci :

192.168.0.1
192.168.0.2
etc.....

J'ai une autre version de mon fichier qui contient les adresses ip + nom de machine comme ceci :

192.168.0.1 machine1
192.168.0.2 machine2
etc.....

Savez-vous comment je peux adapter mon script pour qu'il m'affiche dans le echo
l'ip et le nom de la machine sur laquelle la clé à été copiée ?






--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20130529084026.GA11602@debianserver.info-cr.fr

10 réponses

1 2
Avatar
matthew pideil
Le 29/05/2013 10:40, Nahliel Steinberg a écrit :
Bonjour,

J'ai un script qui me déploie des clés automatiquement sur mes environnements le voici :

#!/bin/bash
a=0
for IP in `cat iptest`
do
a=`expr $a + 1`
cat id_rsa.pub | ssh root@$IP "cat ->> .ssh/authorized_keys"
echo -e "33[1;32m $a - copie de la clé sur $IP [OK] 33[0m"
done

le fichier iptest qui est parsé contient la liste des adresses IP des machines uniquement
comme ceci :

192.168.0.1
192.168.0.2
etc.....

J'ai une autre version de mon fichier qui contient les adresses ip + nom de machine comme ceci :

192.168.0.1 machine1
192.168.0.2 machine2
etc.....

Savez-vous comment je peux adapter mon script pour qu'il m'affiche dans le echo
l'ip et le nom de la machine sur laquelle la clé à été copiée




Ben alors ? On se renseigne pas avant de poster ?

cat id_rsa.pub | ssh root@$(echo $IP| sed 's/(^[^ t]*).*/1/') "cat ->> .ssh/authorized_keys"

et

echo -e "33[1;32m $a - copie de la clé sur $(echo $IP| sed 's/^[^ t]*(.*)/1/') [OK] 33[0m"


--
Matthew

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Belaïd MOUNSI
--00235447029421175d04ddd828cc
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Awk '{print $1 $2}' ipstat te donnera les deux champs
Le 29 mai 2013 11:36, "Nahliel Steinberg" a écrit :

>Ben alors ? On se renseigne pas avant de poster ?

Ben si, mais je n'y arrive po

>
>cat id_rsa.pub | ssh root@$(echo $IP| sed 's/(^[^ t]*).*/1/') "cat
->> .ssh/authorized_keys"

>
>echo -e "33[1;32m $a - copie de la clé sur $(echo $IP| sed 's/^[^
t]*(.*)/1/') [OK] 33[0m"

Merci, mais je n'ai plus que le nom qui s'affiche, j'aimerai avoir les
deux l'ip et le nom


--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive:
http://lists.debian.org/





--00235447029421175d04ddd828cc
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<p>Awk &#39;{print $1 $2}&#39; ipstat   te donnera les deux champs</p>
<div class="gmail_quote">Le 29 mai 2013 11:36, &quot;Nahliel Steinberg&qu ot; &lt;<a href="mailto:"></a>&gt; a écrit :<br type="attribution"><blockquote class="gmail_quote" sty le="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&gt;Ben alors ? On se renseigne pas avant de poster ?<br>
<br>
Ben si, mais je n&#39;y arrive po<br>
<br>
&gt;<br>
&gt;cat id_rsa.pub | ssh root@$(echo $IP| sed &#39;s/(^[^ t]*).*/1/&#39 ;) &quot;cat -&gt;&gt;  .ssh/authorized_keys&quot;<br>
<br>
&gt;<br>
&gt;echo -e &quot;33[1;32m $a - copie de la clé sur $(echo $IP| sed &#3 9;s/^[^ t]*(.*)/1/&#39;) [OK] 33[0m&quot;<br>
<br>
Merci, mais je n&#39;ai plus que le nom qui s&#39;affiche, j&#39;aimerai av oir les deux l&#39;ip et le nom<br>
<br>
<br>
--<br>
Nahliel<br>
<br>
--<br>
Lisez la FAQ de la liste avant de poser une question :<br>
<a href="http://wiki.debian.org/fr/FrenchLists" target="_blank">http:// wiki.debian.org/fr/FrenchLists</a><br>
<br>
Pour vous DESABONNER, envoyez un message avec comme objet &quot;unsubscribe &quot;<br>
vers <a href="mailto:">debian- </a><br>
En cas de soucis, contactez EN ANGLAIS <a href="mailto: ebian.org"></a><br>
Archive: <a href="http://lists.debian.org/ rver.info-cr.fr" target="_blank">http://lists.debian.org/20130529093709.G </a><br>
<br>
</blockquote></div>

--00235447029421175d04ddd828cc--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/CAFuS2bbmZ+
Avatar
Nahliel Steinberg
Ben alors ? On se renseigne pas avant de poster ?



Ben si, mais je n'y arrive po


cat id_rsa.pub | ssh root@$(echo $IP| sed 's/(^[^ t]*).*/1/') "cat ->> .ssh/authorized_keys"


echo -e "33[1;32m $a - copie de la clé sur $(echo $IP| sed 's/^[^ t]*(.*)/1/') [OK] 33[0m"



Merci, mais je n'ai plus que le nom qui s'affiche, j'aimerai avoir les deux l'ip et le nom


--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bzzz
On Wed, 29 May 2013 10:40:26 +0200
Nahliel Steinberg wrote:

Savez-vous comment je peux adapter mon script pour qu'il m'affiche
dans le echo l'ip et le nom de la machine sur laquelle la clé à été
copiée ?



Pourquoi pas avec une recherche DNS?

#!/bin/bash
a=1
for IP in `cat iptest`
do
cat id_rsa.pub | ssh root@$IP "cat - >> .ssh/authorized_keys"
NAME=`nslookup "$IP" | tail -n2 | head -n1 | cut -d'=' -f2`
echo -e "33[1;32m $a - copie de la clé sur $IP [OK] -$NAME33[0m"
a=`expr $a + 1`
done

--
<Cucu> Tu comprends, ce que je veux, c'est qu'enfin,
une fille ait peur de me perdre...
<Knight2000> Réincarne toi en clés de voiture.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
Pourquoi pas avec une recherche DNS?



Bonne idée, mais je n'ai pas toutes les machines de déclarée à ce niveau.

--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
matthew pideil
Le 29/05/2013 11:37, Nahliel Steinberg a écrit :
echo -e "33[1;32m $a - copie de la clé sur $(echo $IP| sed 's/^[^ t]*(.*)/1/') [OK] 33[0m"



Merci, mais je n'ai plus que le nom qui s'affiche, j'aimerai avoir les deux l'ip et le nom



Oui, dans ce cas il faut réutiliser ta ligne :

echo -e "33[1;32m $a - copie de la clé sur $IP [OK] 33[0m"



Je pense aussi qu'une résolution serait plus propre, mais je ne connais
pas d'outil permettant une résolution inverse en passant par exemple par
le fichier '/etc/hosts'.

--
Matthew

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Jean-Marc
On Wed, 29 May 2013 11:37:09 +0200, Nahliel Steinberg
wrote:

Salut,

Merci, mais je n'ai plus que le nom qui s'affiche, j'aimerai avoir
les deux l'ip et le nom



Pour faire dans le simple :

1) fichier de départ = wrk
% cat wrk
info1 col12
info2 col22
info3 col23

2) lecture dans 2 variables :
% cat wrk | while read ip nom; do echo IP = $ip et nom = $nom; done
IP = info1 et nom = col12
IP = info2 et nom = col22
IP = info3 et nom = col23



--
Nahliel



Jean-Marc

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Bzzz
On Wed, 29 May 2013 11:36:00 +0200
Nahliel Steinberg wrote:

>Pourquoi pas avec une recherche DNS?

Bonne idée, mais je n'ai pas toutes les machines de déclarà ©e à ce
niveau.



Tu iras en enfer, avec rien que des consoles xbox360
et des machines sous w$95.

--
<Plonk> pour simplifier :
<Plonk> tu préfères avoir du mal à t'assoir pendant une peti te journée,
ou bien tomber enceinte ?

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Nahliel Steinberg
Tu iras en enfer, avec rien que des consoles xbox360
et des machines sous w$95.




Pas compris



--
Nahliel

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Adrien Poupin
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig795461461CDC3EED891841A8
Content-Type: multipart/alternative;
boundary="------------040609080405070402020204"

This is a multi-part message in MIME format.
--------------040609080405070402020204
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Le 29/05/2013 10:40, Nahliel Steinberg a écrit :
Bonjour,

J'ai un script qui me déploie des clés automatiquement sur mes envi ronnements le voici :

#!/bin/bash
a=0
for IP in `cat iptest`
do
a=`expr $a + 1`
cat id_rsa.pub | ssh root@$IP "cat - >> .ssh/authorized_keys"
echo -e "33[1;32m $a - copie de la clé sur $IP [OK] 33[0m"
done

le fichier iptest qui est parsé contient la liste des adresses IP des machines uniquement
comme ceci :

192.168.0.1
192.168.0.2
etc.....

J'ai une autre version de mon fichier qui contient les adresses ip + no m de machine comme ceci :

192.168.0.1 machine1
192.168.0.2 machine2
etc.....

Savez-vous comment je peux adapter mon script pour qu'il m'affiche dans le echo
l'ip et le nom de la machine sur laquelle la clé à été copiée ?








Bonjour,
Avec un sed ou un cut, tu pourras bien t'en sortir. Pour info, voici un
petit script que j'ai écrit jadis (pas fini bien sûr) qui permet
d'installer mes clefs sur mes serveurs distants :

$ cat bin/install-maintenance

#!/bin/sh

# SM (SSH Maintenance) v 1.0
# Script d'installation d'une clef ssh
# Configuration pour créer un pont ssh (-R) automatiquement
# afin de permettre un accès root sur la machine cible.
#
# Réalisé par Adrien Poupin ()

VERSION=1.0

# Define your own default vars
DEFAULT_HOSTÞv.creasixtine.com
DEFAULT_USER=user-maintenance
DEFAULT_PORTe500

# Error codes
SSH_ERROR
BAD_PARAMS

print_title()
{
sleep 0.5
echo "33[1;31m* $133[0m"
}

usage()
{
cat <<_USAGE
Usage : `basename $0` [-i]
-h Afficher cette aide.
-t, --test-only
Teste uniquement les connexions et affiche les comman-
des à effectuer pour la mise en place d'un tunnel
SSH.
-i, --install
Installation. Modification de ~/.ssh/config en local,
de ~/.ssh/authorized_keys sur le serveur distnat, et
ajout du script init.
_USAGE
}

get_info()
{
print_title "Installation d'un pont SSH vers un serveur distant"

echo -n "Hôte cible ($DEFAULT_HOST) : "
read HOST
[ -z "$HOST" ] && HOST=$DEFAULT_HOST

echo -n "Utilisateur ($DEFAULT_USER) : "
read USER
[ -z "$USER" ] && USER=$DEFAULT_USER

echo -n "Commentaire (Défaut : 'hostname') : "
read COMMENT
[ -z "$COMMENT" ] && COMMENT=`hostname`

echo -n "Port à ouvrir sur l'hôte distant ($DEFAULT_PORT) : "
read REMOTE_PORT
[ -z "$REMOTE_PORT" ] && REMOTE_PORT=$DEFAULT_PORT
}

gen_key()
{
print_title "Création de la clef SSH"
ssh-keygen -t rsa -q -C "$COMMENT - port ouvert : $REMOTE_PORT"
-f rsa_id
KEY="$USER_$HOST.key"
PUBKEY="$KEY.pub"
mv -v rsa_id ~/.ssh/$KEY
mv -v rsa_id.pub ~/.ssh/$PUBKEY
}

configure_localhost()
{
print_title "Configuration de la machine locale"
if [ -z $BOOL_INSTALL ]; then
{
echo -n "Configuration automatique de $HOME/.ssh/config
(o/N) ? "
read BOOL
}
else
{
BOOL=Y
}
fi

if [ "$BOOL" = "Y" -o "$BOOL" = "y" -o "$BOOL" = "O" -o "$B OOL"
= "o" ]; then
{
echo "Modification du fichier ~/.ssh/config"
cat >> ~/.ssh/config <<EOF
Host $HOST
Hostname $HOST
Port 22
User $USER
IdentityFile ~/.ssh/$KEY
EOF
}
fi

echo "TODO : rajouter un script ssh -R
$REMOTE_PORT:localhost:$HOST $USER@$HOST"
}

install_remote_key()
{
print_title "Installation de la clef sur le serveur distant"
if [ -z $BOOL_INSTALL ]; then
{
echo -n "Se connecter au serveur distant pour copier la clef
(o/N) ? "
unset BOOL
read BOOL
}
else
{
BOOL=Y
}
fi

if [ "$BOOL" = "Y" -o "$BOOL" = "y" -o "$BOOL" = "O" -o "$B OOL"
= "o" ]; then
{
echo "Clef publique exportée : $(cat ~/.ssh/$PUBKEY)"
echo "ssh $USER@$HOST ..."

ssh $USER@$HOST "echo "$(cat ~/.ssh/$PUBKEY)" >>
~/.ssh/authorized_keys"

[ $? -ne 0 ] && print_title "Erreur SSH. Abandon." && exit
$SSH_ERROR
echo "... Installation réussie !"
}
fi
}


connection_test()
{
print_title "Test de la connexion : Vous ne devriez pas avoir à
taper de mot de passe."
ssh $USER@$HOST "test 1"

[ $? -ne 0 ] && echo "Erreur SSH. Abandon." && exit $SSH_ERROR
echo "Test OK !"
}

test_only()
{
print_title "Simulation."
cat <<_SIMULATION_
Pour mettre en place le tunnel SSH vers le serveur distant :
1) Créer des clefs SSH avec
~$ ssh-keygen -t rsa -q -C "$COMMENT - port ouvert :
$REMOTE_PORT" -f rsa_id
2) Déplacer les clefs (et les renommer sous un nom parlant, ex.
~/.ssh/$HOST_$USER) vers le répertoire ~/.ssh/
3) Ajouter la configuration sur localhost (~/.ssh/config) :
Host $HOST
Hostname $HOST
Port 22
User $USER
IdentityFile ~/.ssh/MA_CLEF_PRIVÉE
4) Ajouter la clef publique (~/.ssh/MA_CLEF_PRIVÉE.pub) sur l'hôt e
distant dans ~/.ssh/authorized_keys
5) Tester que le pont fonctionne bien :
~$ ssh -R $REMOTE_PORT:localhost:22 $USER@$HOST
6) Ajouter un script de démarrage ou un cron (nécessite autossh) :
~$ screen -dmS autossh autossh -R $REMOTE_PORT:localhost:22
$USER@$HOST
_SIMULATION_
exit 0;
}


#
# main()
#

if [ $# -ge "1" ]; then
{
for i in `seq 1 $#`; do
{
case $1 in
-i | --install) BOOL_INSTALL="1";;
-t | --test-only) DO_NOTHING="1";;
-h | --help) usage;;
*) echo "$1 : Mauvais argument"; usage; exit $BAD_PARAMS ;;
esac

shift
}
done
}
fi

sleep 0.5
echo "33[1;32mSSH Maintenance version $VERSION33[0m"
# Test-only case : tells the user.
[ ! -z $DO_NOTHING ] && echo "Test-only : Mode de simulation seule."

# Get the vars : HOST, USER and COMMENT
get_info

# Test only
[ ! -z $DO_NOTHING ] && test_only

# Generate the RSA keys to install on localhost and remote host.
gen_key

# Configure the local machine to automatically make a bridge.
configure_localhost

# Install the RSA key on remote host
install_remote_key

# Testing the connection
connection_test

exit 0;



--
Adrien
-------------------------------------------

--------------040609080405070402020204
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Le 29/05/2013 10:40, Nahliel Steinberg a &eacute;crit&nbsp;:
<blockquote
cite="mid:"
type="cite">
<pre wrap="">Bonjour,

J'ai un script qui me d&eacute;ploie des cl&eacute;s automatiquement sur mes environnements le voici :

#!/bin/bash
a=0
for IP in `cat iptest`
do
a=`expr $a + 1`
cat id_rsa.pub | ssh root@$IP "cat - &gt;&gt; .ssh/authorized_keys"
echo -e "33[1;32m $a - copie de la cl&eacute; sur $IP [OK] 33[0m"
done

le fichier iptest qui est pars&eacute; contient la liste des adresses IP des machines uniquement
comme ceci :

192.168.0.1
192.168.0.2
etc.....

J'ai une autre version de mon fichier qui contient les adresses ip + nom de machine comme ceci :

192.168.0.1 machine1
192.168.0.2 machine2
etc.....

Savez-vous comment je peux adapter mon script pour qu'il m'affiche dans l e echo
l'ip et le nom de la machine sur laquelle la cl&eacute; &agrave; &eacute; t&eacute; copi&eacute;e ?






</pre>
</blockquote>
Bonjour,<br>
Avec un sed ou un cut, tu pourras bien t'en sortir. Pour info, voici
un petit script que j'ai &eacute;crit jadis (pas fini bien s&ucirc;r) qui permet
d'installer mes clefs sur mes serveurs distants :<br>
<br>
$ cat bin/install-maintenance <br>
<blockquote><tt>#!/bin/sh</tt><br>
<tt><br>
# SM (SSH Maintenance) v 1.0</tt><br>
<tt># Script d'installation d'une clef ssh</tt><br>
<tt># Configuration pour cr&eacute;er un pont ssh (-R) automatiquem ent</tt><br>
<tt># afin de permettre un acc&egrave;s root sur la machine cible.< /tt><br>
<tt># </tt><br>
<tt># R&eacute;alis&eacute; par Adrien Poupin (<a class="moz-txt- link-abbreviated" href="mailto:"> -poupin.fr</a>)</tt><br>
<tt><br>
VERSION=1.0</tt><br>
<tt><br>
# Define your own default vars</tt><br>
<tt>DEFAULT_HOSTÞv.creasixtine.com</tt><br>
<tt>DEFAULT_USER=user-maintenance</tt><br>
<tt>DEFAULT_PORTe500</tt><br>
<tt><br>
# Error codes</tt><br>
<tt>SSH_ERROR</tt><br>
<tt>BAD_PARAMS</tt><br>
<tt><br>
print_title()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; sleep 0.5</tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo "33[1;31m* $133[0m"</tt><br>
<tt>}</tt><br>
<tt><br>
usage()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; cat &lt;&lt;_USAGE</tt><br>
<tt>Usage : `basename $0` [-i]</tt><br>
<tt>&nbsp;&nbsp;&nbsp; -h&nbsp;&nbsp; Afficher cette aide.</tt><br>
<tt>&nbsp;&nbsp;&nbsp; -t, --test-only</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Teste uniqueme nt les connexions et affiche les
comman-</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; des &agr ave; effectuer pour la mise en place d'un tunnel</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSH.</tt ><br>
<tt>&nbsp;&nbsp;&nbsp; -i, --install</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Installation. Modification de ~/.ssh/config en local,</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; de ~/.ss h/authorized_keys sur le serveur distnat, et</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ajout du script init.</tt><br>
<tt>_USAGE</tt><br>
<tt>}</tt><br>
<tt><br>
get_info()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Installation d'un pont SSH vers un serveur
distant"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo -n "H&ocirc;te cible ($DEFAULT_HOST) : "</tt><br>
<tt>&nbsp;&nbsp;&nbsp; read HOST</tt><br>
<tt>&nbsp;&nbsp;&nbsp; [ -z "$HOST" ] &amp;&amp; HOST=$DEFAULT_HO ST</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo -n "Utilisateur ($DEFAULT_USER) : "</tt ><br>
<tt>&nbsp;&nbsp;&nbsp; read USER</tt><br>
<tt>&nbsp;&nbsp;&nbsp; [ -z "$USER" ] &amp;&amp; USER=$DEFAULT_US ER</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo -n "Commentaire (D&eacute;faut : 'hostn ame') : "</tt><br>
<tt>&nbsp;&nbsp;&nbsp; read COMMENT</tt><br>
<tt>&nbsp;&nbsp;&nbsp; [ -z "$COMMENT" ] &amp;&amp; COMMENT=`host name`</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo -n "Port &agrave; ouvrir sur l'h&ocirc; te distant ($DEFAULT_PORT)
: "</tt><br>
<tt>&nbsp;&nbsp;&nbsp; read REMOTE_PORT</tt><br>
<tt>&nbsp;&nbsp;&nbsp; [ -z "$REMOTE_PORT" ] &amp;&amp; REMOTE_PORT =$DEFAULT_PORT</tt><br>
<tt>}</tt><br>
<tt><br>
gen_key()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Cr&eacute;ation de la clef SSH" </tt><br>
<tt>&nbsp;&nbsp;&nbsp; ssh-keygen -t rsa -q -C "$COMMENT - port ouv ert :
$REMOTE_PORT" -f rsa_id</tt><br>
<tt>&nbsp;&nbsp;&nbsp; KEY="$USER_$HOST.key"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; PUBKEY="$KEY.pub"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; mv -v rsa_id ~/.ssh/$KEY</tt><br>
<tt>&nbsp;&nbsp;&nbsp; mv -v rsa_id.pub ~/.ssh/$PUBKEY</tt><br>
<tt>}</tt><br>
<tt><br>
configure_localhost()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Configuration de la machine loc ale"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; if [ -z $BOOL_INSTALL ]; then</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Configurati on automatique de
$HOME/.ssh/config (o/N) ? "</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read BOOL</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; else</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL=Y</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; fi</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; if [ "$BOOL" = "Y" -o "$BOOL" = "y" -o " $BOOL" = "O" -o
"$BOOL" = "o" ]; then</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Modification d u fichier ~/.ssh/config"</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cat &gt;&gt; ~/.ssh/ config &lt;&lt;EOF</tt><br>
<tt>Host $HOST</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Hostname $HOST</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Port 22</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; User $USER</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; IdentityFile ~/.ssh/$KEY</tt><br>
<tt>EOF</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; fi</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo "TODO : rajouter un script ssh -R
$REMOTE_PORT:localhost:$HOST $USER@$HOST"</tt><br>
<tt>}</tt><br>
<tt><br>
install_remote_key()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Installation de la clef sur le serveur
distant"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; if [ -z $BOOL_INSTALL ]; then</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Se connecte r au serveur distant pour copier
la clef (o/N) ? "</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unset BOOL</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read BOOL</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; else</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL=Y</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; fi</tt><br>
<tt>&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp; if [ "$BOOL" = "Y" -o "$BOOL" = "y" -o " $BOOL" = "O" -o
"$BOOL" = "o" ]; then</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Clef publique export&eacute;e : $(cat ~/.ssh/$PUBKEY)"</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "ssh $USER@$HOS T ..."</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssh $USER@$HOST "ech o "$(cat ~/.ssh/$PUBKEY)"
&gt;&gt; ~/.ssh/authorized_keys"</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ $? -ne 0 ] &amp;&a mp; print_title "Erreur SSH.
Abandon." &amp;&amp; exit $SSH_ERROR</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "... Installati on r&eacute;ussie !"</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; fi</tt><br>
<tt>}</tt><br>
<tt><br>
</tt><br>
<tt>connection_test()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Test de la connexion : Vous ne devriez pas
avoir &agrave; taper de mot de passe."</tt><br>
<tt>&nbsp;&nbsp;&nbsp; ssh $USER@$HOST "test 1"</tt><br>
<tt><br>
&nbsp;&nbsp;&nbsp; [ $? -ne 0 ] &amp;&amp; echo "Erreur SSH. Aban don."
&amp;&amp; exit $SSH_ERROR</tt><br>
<tt>&nbsp;&nbsp;&nbsp; echo "Test OK !"</tt><br>
<tt>}</tt><br>
<tt><br>
test_only()</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; print_title "Simulation."</tt><br>
<tt>&nbsp;&nbsp;&nbsp; cat &lt;&lt;_SIMULATION_ </tt><br>
<tt>Pour mettre en place le tunnel SSH vers le serveur distant :</t t><br>
<tt>1) Cr&eacute;er des clefs SSH avec </tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; ~$ ssh-keygen -t rsa -q -C "$COMMENT - port ouvert :
$REMOTE_PORT" -f rsa_id</tt><br>
<tt>2) D&eacute;placer les clefs (et les renommer sous un nom parla nt,
ex. ~/.ssh/$HOST_$USER) vers le r&eacute;pertoire ~/.ssh/</tt><br >
<tt>3) Ajouter la configuration sur localhost (~/.ssh/config) :</tt ><br>
<tt>Host $HOST</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Hostname $HOST</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; Port 22</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; User $USER</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; IdentityFile ~/.ssh/MA_CLEF_PRIV&Eacut e;E</tt><br>
<tt>4) Ajouter la clef publique (~/.ssh/MA_CLEF_PRIV&Eacute;E.pub) sur
l'h&ocirc;te distant dans ~/.ssh/authorized_keys</tt><br>
<tt>5) Tester que le pont fonctionne bien :</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; ~$ ssh -R $REMOTE_PORT:localhost:22 $U SER@$HOST</tt><br>
<tt>6) Ajouter un script de d&eacute;marrage ou un cron (n&eacute;c essite
autossh) :</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp; ~$ screen -dmS autossh autossh -R
$REMOTE_PORT:localhost:22 $USER@$HOST</tt><br>
<tt>_SIMULATION_</tt><br>
<tt>&nbsp;&nbsp;&nbsp; exit 0;</tt><br>
<tt>}</tt><br>
<tt><br>
</tt><br>
<tt>#</tt><br>
<tt># main()</tt><br>
<tt>#</tt><br>
<tt><br>
if [ $# -ge "1" ]; then</tt><br>
<tt>{</tt><br>
<tt>&nbsp;&nbsp;&nbsp; for i in `seq 1 $#`; do</tt><br>
<tt>&nbsp;&nbsp;&nbsp; {</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case $1 in</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp; -i | --install) BOOL_INSTALL="1";;</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp; -t | --test-only) DO_NOTHING="1";;</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp; -h | --help) usage;;</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb sp; *) echo "$1 : Mauvais argument"; usage; exit
$BAD_PARAMS ;;</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esac</tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tt><br>
<tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shift</tt><br>
<tt>&nbsp;&nbsp;&nbsp; }</tt><br>
<tt>&nbsp;&nbsp;&nbsp; done</tt><br>
<tt>}</tt><br>
<tt>fi</tt><br>
<tt><br>
sleep 0.5</tt><br>
<tt>echo "33[1;32mSSH Maintenance version $VERSION33[0m"</tt><b r>
<tt># Test-only case : tells the user.</tt><br>
<tt>[ ! -z $DO_NOTHING ] &amp;&amp; echo "Test-only : Mode de
simulation seule."</tt><br>
<tt><br>
# Get the vars : HOST, USER and COMMENT</tt><br>
<tt>get_info</tt><br>
<tt><br>
# Test only</tt><br>
<tt>[ ! -z $DO_NOTHING ] &amp;&amp; test_only</tt><br>
<tt><br>
# Generate the RSA keys to install on localhost and remote host.< /tt><br>
<tt>gen_key</tt><br>
<tt><br>
# Configure the local machine to automatically make a bridge.</tt ><br>
<tt>configure_localhost</tt><br>
<tt><br>
# Install the RSA key on remote host</tt><br>
<tt>install_remote_key</tt><br>
<tt><br>
# Testing the connection</tt><br>
<tt>connection_test</tt><br>
<tt><br>
exit 0;</tt></blockquote>
<br>
<br>
<div class="moz-signature">-- <br>
Adrien<br>
-------------------------------------------</div>
</body>
</html>

--------------040609080405070402020204--

--------------enig795461461CDC3EED891841A8
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJRpeL5AAoJEN2mnsXFeEtwytsH/jZEQwJUi06D+b/S11SXLwxa
S3c4dlveQF2tc4p/GJexFDwSUFAt1h11iBRzVhrvc5RZyYU+DRsV5reJl5LbBr3M
9vgO23s6K8RDBLoWtBU8F4lBsNfrGHIJss6Xf1/TY2B6qQE/xCID4EdTmV/MPT12
abftW7MBq04yZXhi0M9VD//eLFYXuc6nw4F5UGGjYQuHI3UjtQ2UGs5f3mQptjFm
IJ9eA5eOwSyZ1NRGVWhm+WMl0nCBdMvvGd06R1GlQueprMzrFmV64Xcmn4Xi+kYb
bSq+OAbukIChz1ZK/gvWnvjctYvoOi34vcwt25zgOuhAbTDpE1kpE+FzOvIADOQ =FsMq
-----END PGP SIGNATURE-----

--------------enig795461461CDC3EED891841A8--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
1 2