Si vous avez configuré SSH et quelques autres outils, il est assez facile de se connecter à une autre machine et d'exécuter quelques programmes. Cela peut être pratique lorsque vous utilisez une machine qui n'a peut-être pas beaucoup de mémoire ou de puissance de traitement et que vous avez accès à une machine plus grande quelque part sur le réseau. Par exemple, supposons que vous souhaitiez recoder une vidéo sur une boîte que vous utilisez comme serveur multimédia mais que cela irait beaucoup plus vite sur votre serveur géant avec une douzaine de cœurs et 32 ​​Go de RAM.

Exécution à distance

Cependant, il y a quelques problèmes avec ce scénario. Premièrement, vous n'avez peut-être pas le logiciel sur la machine distante. Même si vous le faites, il se peut que ce ne soit pas la version que vous attendez ou que la configuration soit identique à votre copie locale. Ensuite, il y a le problème du fichier. le fichier d'entrée doit provenir de votre système de fichiers local et vous aimeriez que la sortie se termine là aussi. Celles-ci ne sont pas insurmontables, bien sûr. Vous pouvez installer le programme sur la télécommande et copier vos fichiers manuellement. Ou vous pouvez utiliser Outrun.

Il y a cependant quelques limitations. Vous avez besoin d'Outrun sur les deux machines et les deux machines doivent avoir la même architecture CPU. Malheureusement, cela signifie que vous ne pouvez pas l'utiliser pour exécuter facilement des tâches sur votre PC x86-64 à partir d'un Raspberry Pi. Vous aurez également besoin d'un accès root à la machine distante. Le système dépend également de la configuration des bibliothèques du système de fichiers FUSE.

Une idée simple

L'idée est simple. Vous pouvez faire un encodage vidéo comme celui-ci:

outrun user@host ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4

Cela fonctionnera même si ffmpeg n’est pas sur la machine distante et que les fichiers d’entrée et de sortie seront sur votre boîte locale là où vous les attendez. Voici un screencast de la page GitHub du projet:

Une mise en œuvre complexe

Comment cela marche-t-il? Un système de fichiers FUSE monte votre système de fichiers local à distance à l'aide d'un système de fichiers RPC léger. Puis un chroot fait que la machine distante ressemble à votre machine locale, mais – vraisemblablement – plus rapidement. Il y a quelques autres choses à faire, telles que la configuration de l'environnement et du répertoire actuel.

le chroot, au fait, c'est pourquoi vous avez besoin de root sur la machine distante. En tant qu’utilisateur ordinaire, vous ne pouvez pas faire pivoter le système de fichiers racine pour que cette astuce fonctionne.

Pour améliorer les performances, Outrun met en cache les répertoires système et suppose qu'ils ne changeront pas pendant la durée de vie de la commande. Il prélève également de manière agressive en utilisant des heuristiques pour deviner les fichiers dont vous aurez besoin en plus de celui que le système a demandé.

L'avenir

Nous souhaitons qu'il y ait une option pour supposer que le programme s'exécutera sur la machine distante et ne configurera que les fichiers d'entrée et de sortie. Cela faciliterait la tâche comme découper une impression 3D sur un PC distant à partir d'un Raspberry Pi exécutant Octoprint, par exemple. Bien sûr, tout cela est open source, alors peut-être devrions-nous faire cela nous-mêmes.

Là encore, vous pouvez faire quelque chose comme ça assez facilement avec sshfs et quelques autres astuces. Si vous souhaitez exécuter un programme sur un groupe de machines distantes, il existe également des moyens de le faire.

LAISSER UN COMMENTAIRE

Rédigez votre commentaire !
Entrez votre nom ici