J'ai un script perl qui crée un tunnel ssh et établit une connexion Perl DBI à travers elle pour interroger une base de données sur un hôte distant:Meilleure façon d'éviter "mux_client_request_session: lecture du maître a échoué: erreurs ssh tronquées"
1 my $ssh = Net::OpenSSH->new('[email protected]');
2 $pid = $ssh->spawn({ssh_opts => '-L 127.0.0.1:12345:127.0.0.1:3306'}, 'sleep 3');
3 return DBI->connect($dsn, $db_user, $db_pass);
cela fonctionne environ 80 à 90% du temps, mais le reste du temps je reçois cette erreur en essayant de se connecter à la base de données:
mux_client_request_session: lire maître a échoué: Broken pipe
En cours de dépannage cela, j'ai remarqué que si je dors le programme très brièvement après la ligne 2 avec usleep (10000)
, cela fonctionne 100% du temps. Je ne suis pas sûr pourquoi c'est mais je suis curieux savoir et comment je peux résoudre correctement le problème.
Merci.
Merci. Qu'est-ce qui se passe dans le $ dsn? Aussi, puisque je ne suis pas sur Windows, je suppose que j'utilise 3306 pour le port mysql au lieu de 4022? – StevieD
'$ dsn' devrait pointer vers le côté local du tunnel. J'ai inclus un exemple ci-dessus pour mysql. – salva
Merci. Je vais tester cela dès que j'ai une chance. – StevieD