Fichiers locaux à distance manipuler avec Ruby?
-
18-09-2019 - |
Question
Je voudrais automatiser la création de liens symboliques sur mon ordinateur portable d'une simple application Rails en cours d'exécution sur un serveur distant. Je dois être en mesure d'exécuter les tâches du noyau sur l'ordinateur portable où que vous soyez. Est-ce même possible de le faire?
La solution
Fetch un script distant et l'exécuter
Votre serveur peut créer un script Shell ou Ruby qui est destiné à être exécuté sur votre ordinateur portable. Votre ordinateur portable doit maintenant vérifier régulièrement pour ce script et l'exécuter. Les avantages sont:
- Cela fonctionne non seulement pour votre ordinateur portable, mais pour toute autre machine qui vérifie le script.
- Vous n'avez pas besoin de tout autre transport que http
- Le serveur n'a pas besoin de connaître le client à l'avance
- Cela fonctionne pour toute autre tâche que de créer des liens symboliques sans changement du côté client.
Le côté client pourrait être aussi simple que:
wget -O - "url" | ruby -
ou
wget -O - "url" | sh -
Générer une liste de liens symboliques sur votre serveur
Votre serveur peut créer une liste des liens symboliques nécessaires. Sur votre ordinateur client, vous auriez besoin d'un programme qui analyse régulièrement cette liste et crée les liens symboliques. Les avantages sont les suivants:
- Vous n'avez pas besoin de faire confiance au serveur
- Votre serveur ne peut pas faire
rm -rf /
par accident - Vous n'avez pas besoin de tout autre transport que http
- Cela fonctionne non seulement pour votre ordinateur portable, mais pour toute autre machine qui vérifie la liste.
Le côté client pourrait être aussi simple que
wget -O - "url" | ruby -r yaml -e "YAML.load(STDIN).each { |a, b| \`ln -s \"#{a}\" \"#{b}\" \` }"
Autres conseils
Vous pouvez le faire par le montage du système de fichiers à l'aide de fusible. Il est tout à fait une chose peu soignée, à mon avis.
Edit:. Changé le lien pour pointer vers FuseFs, qui est fusible avec les liaisons Ruby, qui est ce que vous aurez besoin si vous utilisez Ruby
Vous pouvez utiliser la marionnette qui est basée rubis.
Si c'est seulement votre ordinateur portable et aucun autre client, vous pouvez faire le serveur ssh à votre ordinateur portable et faire tout ce dont il a besoin. En général, non, il est impossible pour un serveur HTTP à faire quoi que ce soit sur la machine cliente.