Je souhaite utiliser le package rsub pour Sublime Text, afin d’éditer du code dans un conteneur Docker fonctionnant sur un serveur distant. Cependant quand j'exécute
rsub my_code.py
Je reçois l'erreur:
/usr/local/bin/rsub: connect: Cannot assign requested address
/usr/local/bin/rsub: line 392: /dev/tcp/localhost/52698: Cannot assign requested address
La ligne 392 correspond fondamentalement à cette instruction:
exec 3<> "/dev/tcp/localhost/52698"
bash: connect: Cannot assign requested address
bash: /dev/tcp/localhost/52698: Cannot assign requested address
Si je quitte le conteneur Docker et exécute la même instruction sur le serveur distant, cela fonctionne bien (ou du moins, cela ne me donne aucun message d'erreur). Pouvez-vous m'aider à résoudre ce problème? Je peux modifier le fichier Docker si nécessaire. Je peux aussi le poster ici si vous pensez que c'est nécessaire, mais je devrais le dire un peu avant de supprimer les informations sensibles.
EDIT: j'inclus la partie du script rsub
qui génère l'erreur. Notez qu'à ce stade du script, $Host=localhost
et $port=52698
. Je vérifiai cela avec les déclarations echo
.
# connect to textmate and send command
#
exec 3<> "/dev/tcp/$Host/$port"
if [ $? -gt 0 ]; then
echo "Unable to connect to TextMate on $Host:$port"
exit 1
fi
read -r server_info 0<&3
log $server_info
for i in "${!filepaths[@]}"; do
open_file "$i"
done
echo "." 1>&3
if [[ $nowait = true ]]; then
exec </dev/null >/dev/null 2>/dev/null
( (handle_connection &) &)
else
handle_connection
fi
EDIT: On m'a posé des questions sur le système d'exploitation hôte. Ceci est le résultat de uname -a
sur l'hôte distant et à l'extérieur du conteneur Docker (nom du serveur supprimé):
Linux xxxxxxx 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
et c'est le résultat de la même commande quand run dans le conteneur Docker:
Linux yyyyyyyyy 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
xxxxxxx
et yyyyyyy
sont des chaînes différentes. De plus, lorsque je suis dans le conteneur Docker, je ne trouve aucun répertoire tcp
dans le répertoire dev
:
root@7f199087c883:~# ls /dev/tcp
ls: cannot access '/dev/tcp': No such file or directory
En fin de compte, puisque rsub
travaillait sur l'hôte distant, la solution la plus simple consistait à:
rsub
pour éditer n’importe quel fichier sur l’hôte distant, dans une session de Sublime sur mon PC localC'est un peu lent, car chaque fois que je fais des changements, je dois reconstruire, mais: