Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/03/2015, à 19:50

totola

[Résolu] python: ChannelException: (1, 'Administratively prohibited')

Bonjour,
j'utilise le module fabric de python pour exécuter des commandes sur des postes distants avec une interface python (tkinter).. ça semble marcher bien, un temps du moins, mais au bout d'un moment (je n'arrive pas à savoir quand, ça paraît plus ou moins aléatoire), j'obtiens cette erreur, et je ne peux plus rien faire à part fermer brutalement le programme et le relancer:


 Warning: run() received nonzero return code 1 while executing 'kill $(cat PIDpt.txt)'!

[172.16.125.12] run: kill $(cat PIDpt.txt)
Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
    return self.func(*args)
  File "PyPaFi3UTF8.py", line 1396, in ParlerTous
    effacer_tous(2)
  File "PyPaFi3UTF8.py", line 1343, in effacer_tous
    run("kill $(cat PIDpt.txt)")
  File "/usr/local/lib/python2.7/dist-packages/fabric/network.py", line 647, in host_prompting_wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/fabric/operations.py", line 1054, in run
    shell_escape=shell_escape)
  File "/usr/local/lib/python2.7/dist-packages/fabric/operations.py", line 921, in _run_command
    channel=default_channel(), command=wrapped_command, pty=pty,
  File "/usr/local/lib/python2.7/dist-packages/fabric/state.py", line 397, in default_channel
    chan = _open_session()
  File "/usr/local/lib/python2.7/dist-packages/fabric/state.py", line 389, in _open_session
    return connections[env.host_string].get_transport().open_session()
  File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 615, in open_session
    max_packet_size=max_packet_size)
  File "/usr/local/lib/python2.7/dist-packages/paramiko/transport.py", line 740, in open_channel
    raise e
ChannelException: (1, 'Administratively prohibited')

En cherchant un peu sur le net, 'Adminitratively prohibited' signifierait que l'hôte a refusé la connection ou quelque chose comme ça (c'est en english et assez technique..)
Ce que je ne comprends pas c'est le caractère aléatoire de l'erreur... ça marche très bien un bon bout de temps puis ça va se mettre à bloquer..

Pour info, j'ai la fonction suivante pour se connecter:

		def connecter_ssh(numero):
			env.host_string = '{}'.format(self.IP[numero])
			env.user = '{}'.format(self.user[numero])
			env.password = '{}'.format(self.passwd[numero])

et mes fonctions que je lance sont les suivantes:

		def parler_tous(poste):
			if self.couleur[poste]=='forestgreen':
				def callback():
					connecter_ssh(poste)
					with settings(warn_only=True):
						run("cvlc {} & echo $! > PIDpt.txt".format(self.IP_multicast[0]))
				self.tPt = threading.Thread(target=callback)
				self.tPt.start()
			else:
				print('poste {} non connecté'.format(poste))
			
		def effacer_tous(poste):
			if self.couleur[poste]=='forestgreen':
				connecter_ssh(poste)
				print 'coucou'
				with settings(warn_only=True):
					run("kill $(cat PIDpt.txt)")
				self.tPt._Thread__stop()
			else:
				print('poste {} non connecté'.format(poste))

J'ai rajouté un 'coucou' qui a l'air de bien s'executer, le problème est bien sur la commande run("kill $(cat PIDpt.txt)")...

Merci de votre aide
smile

Dernière modification par totola (Le 11/03/2015, à 01:03)

Hors ligne

#2 Le 11/03/2015, à 00:45

totola

Re : [Résolu] python: ChannelException: (1, 'Administratively prohibited')

ça ne serait pas un truc comme ça:

http://tracker.ceph.com/issues/9908

I had the same issue, so i understood that my Linux box was not allowing more than 10 sessions, so i added
Maxsession 100 in/etc/ssh/sshd_config and it restarted the service, and now Paramiko is able to make more than 10 concurrent session.

Par contre je ne trouve pas Maxsession dans /etc/ssh/sshd_config..

[edit]
Bah je l'ai rajouté à la fin du fichier... Par contre ça à l'air d'être:

Maxsessions 100

Et ça à l'air de marcher, je ne retrouve plus cette erreur!

Dernière modification par totola (Le 11/03/2015, à 01:03)

Hors ligne