Salut,
Je veux lancer un script a l'ouverture de chaque connexion ssh
Merci d'avance.
Salut,
Je veux lancer un script a l'ouverture de chaque connexion ssh
Merci d'avance.
Je cherche à faire un script qui se connecte sur un serveur
Quand un utilisateur se connecte a ce serveur par ssh le script affiche une liste des machines distantes autorisées.
Après l'utilisateur choisit une machine, le script lance une connexion ssh vers la machine choisie c'est à dire l'utilisateur fait une connexion ssh a une machine distante à travers un serveur où il y a notre script (serveur de rebond)
appelle ton script dans /etc/ssh/sshrc, ou écris-le directement dans ce fichier.
/etc/ssh/sshrc n'a pas à être exécutable, il est appelé par sh. Il doit juste être lisible par tous.
merci N_BaH mais une autre svp mon script affiche un tableau ou il y a un numero le nom (username )et @ IP de la machine distante et il demande a l'utilisateur a entrer le numero de la machine choisis voila le script:
et apres la connexion ssh il affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #!/usr/bin/python # -*- coding: utf-8 -*- import os import readline def verifier_liste(): elmt=[] fd=open("/home/tilea/Bureau/donnee","rb") for ligne in fd.readlines(): elmt.append(ligne.split(':')[0:3]) return elmt def separateur(val,lg): val=str(val) if len(val)>lg-2: val=val[0:(lg-4)]+'..' k=int((lg-len(val))/2) ch=k*' '+val k=lg-(len(ch)-1) ch+=k*' ' return ch def affiche_liste(l): a="|----------------------------------------------------------------------------|\n"#9-31-34 b="| | | |\n" tab="\n|__Numero_|______Nom d'utilisateur________|__________Adresse IP_____________|\n\n" i=0 while(i<len(l)): li=l[i] tab+='|'+separateur(i+1,8)+'|'+separateur(li[0],30)+'|'+separateur(li[1],33)+'|\n'+a i+=1 print tab choix=input("\n\t taper le num pour faire la cnx ssh\n") return choix def start(): a=verifier_liste() choix=affiche_liste(a) os.system("ssh %s@%s"%(a[choix-1][0],a[choix-1][1])) start()
et svp si vous avez une idee pour lancer la deuxième connexion ssh automatiquement et merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |__Numero_|______Nom d'utilisateur________|__________Adresse IP_____________| | 1 | root | localhost | |----------------------------------------------------------------------------| | 2 | imad | 102.168.2.36 | |----------------------------------------------------------------------------| | 3 | othmane | 290.123.7.123 | |----------------------------------------------------------------------------| | 4 | gogo | 29.24.36.7 | |----------------------------------------------------------------------------| taper le num pour faire la cnx ssh Traceback (most recent call last): File "/bin/Connect_to.py", line 38, in <module> start() File "/bin/Connect_to.py", line 36, in start choix=affiche_liste(a) File "/bin/Connect_to.py", line 32, in affiche_liste choix=input("\n\t taper le num pour faire la cnx ssh\n") EOFError: EOF when reading a line
visiblement ce script ne lit pas l'entrée standard. comment es-t-il lancé ?
s'il s'agit du sshrc c'est normal qu'il ne lise pas l'entrée standard à en croire la doc :
SSHRC
If the file ~/.ssh/rc exists, sh(1) runs it after reading the environment
files but before starting the user's shell or command. It must not
produce any output on stdout; stderr must be used instead. If X11
forwarding is in use, it will receive the "proto cookie" pair in its
standard input (and DISPLAY in its environment). The script must call
xauth(1) because sshd will not run xauth automatically to add X11
cookies.
sur le fichier sshrc je fait une appelle de script connect_to et j'ai ajouter connect_to au $PATH
connect_to c'est le script python ?
Si oui c'est donc normal.
Si je comprend bien il s'agit de lancer une connexion ssh sur une machine qui lance alors un script qui lance à son tour une connexion ssh vers d'autres machines ?
pourquoi ne pas simplement lancer le premier ssh avec une commande sur le scrip connect_to ?
ouaip ;(
Je n'avais effectivement pas pris en considération que tu voulais exécuter un script interactif.
Supprime /etc/ssh/shrc, qui n'existait pas, et
inscris l'appel à ton script python à la fin de /etc/profile, à la suite d'un test sur l'existence de la variable d'environnement SSH_TTY, ainsi tu seras sûr que l'utilisateur ne fait pas qu'envoyer une commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part test -n "$SSH_TTY" && /chemin/connect_to
mettre un script dans /etc/ssh/sshrc ne permettra pas à l'utilisateur d'interagir avec le script.
pour que l'utilisateur puisse répondre au script, et que le script prenne en compte les réponses, il faut que l'utilisateur ait accès à un terminal.
si un utilisateur se connecte en ssh en ayant accès à un terminal (pas juste en lançant une commande par ssh, genre : ssh user@serveur 'ls ~'), une variable d'environnement est créée qui prend comme valeur le nom du terminal qui lui a été attribué :/etc/profile est lu lors de toute connexion, donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ssh user@serveur # bla bla motd : bienvenue sur serveur $ echo $SSH_TTY /dev/pts/0 $ ^D déconnexion
à la fin de ce fichier, tu ajoutes un test.
si l'utilisateur à accès à un terminal, alors exécution de ton script, finsi
/etc/ssh/sshrc peut être supprimé, il ne sert à rien dans ton cas.
Partager