Script Shell de la machine locale pour exécuter la command dans une machine distante, puis continuer sur la machine locale

Le problème est le suivant: je veux copyr des files à partir d'une machine distante.

Je cherche un moyen d'écrire un script shell qui se connecte à la machine distante, get l'location du file stocké, une fois que je retire l'location du server distant et que j'utilise Scp depuis la machine locale avec l'location obtenu pour copyz le file.

Plus précisément, je veux savoir comment, à partir d'un script, je me connecte à une machine distante, fais des tâches sur cette machine. Déconnectez-vous, et continuez l'exécution localement.

4 Solutions collect form web for “Script Shell de la machine locale pour exécuter la command dans une machine distante, puis continuer sur la machine locale”

Solution 1:

remote_output="$(ssh user@host "remote command")" scp "user@$host:$remote_output" /local/path 

Cela fonctionne en se connectant à la machine distante, en exécutant certaines commands et en copiant la sortie sur une variable sur votre machine locale. Dites, en faisant écho au path du file à distance, en le capturant localement.

Solution 2:

 ssh user@host "determine_path; cat filename" >local_filename 

Cela fonctionne en trouvant et en sortant le file directement à distance, et en le renvoyant à un file localement. Cela efface le scp. Cela exige que les étapes avant "chat" n'aient pas de sortie (que vous pouvez résoudre avec &> / dev / null).

Vous pouvez écrire un script dans le format suivant:

 command1 command2 ... ssh user@machine command3 ... command4 command5 

Vous devez configurer les keys SSH pour get la command3 exécutée sans vous requestr un mot de passe.

Je suppose que vous avez déjà une idée de la façon dont vous identifiez le file que vous souhaitez copyr et que vous êtes en mesure, ou déjà, d'écrire un script ou un set de commands qui s'exécuteront sur la machine distante qui effectue cette identification .

En outre, je supposerai également que ces commands impriment sur la sortie standard le path d'access complet au file ou le path relatif du file par rapport au directory personnel de l'user SSH utilisé pour la copy. Dans mon exemple, le nom du script est "getfilepath.sh", bien qu'il ne soit pas nécessaire d'être un script shell, il pourrait s'agir d'un autre exécutable ou même d'une série de commands.

 # Script to be executed on local machine. # put any leading local commands here. FILE=$(ssh user@emote getfilepath.sh); scp user@remotehost:"$FILE" . # put any trailing local commands here. 

Dans le code ci-dessus, la notation "$ ()" est une façon de capturer la sortie standard d'une command en tant que variable shell. Il est assez standard, mais si vous utilisez un shell qui ne le comprend pas, vous pouvez plutôt entourer la command avec "back-ticks", qui sont les marques d'accentuation à gauche de la touche 1 sur la plupart des keyboards américains.

peut-être il est possible de triggersr une tâche planifiée sur la machine distante qui fait tout le travail.

Cela vous empêcherait de vous connecter à la machine distante pendant que vous searchz l'location des files que vous souhaitez copyr.

Je fais ça:

Comand line triggers une tâche planifiée qui exécute un file batchscript dans mon cas.

 schtasks /run /s remoteserver /u %user% /p %password% /tn "scheduledtaskname" 

Meilleures salutations

  • Désactivation de ssh en tant que root sur les boîtes Linux et les défis de l'écriture de scripts
  • Comment puis-je append manuellement des adresses IP aux négatifs?
  • ssh-ing à un port
  • Un ssh réussi et un sshfs échoué impliquent-ils une erreur locale?
  • Comment pouvez-vous faire des SSH dynamiques et basés sur des clés similaires à GitHub?
  • SSHD - bloquant l'authentification par mot de passe
  • SSH s'arrête à "utiliser le nom d'user" avec les IPTables en vigueur
  • Problèmes avec SSH
  • Authentification de key publique ou similaire sur HTTP / HTTPS?
  • reliant un repository local Windows Git au server aws linux git
  • Existe-t-il un moyen d'éviter le retard de saisie SSH?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.