1 votes

Comment envoyer une commande osascript à un Mac via SSH - Traitement des guillemets simples

Je sais comment envoyer une commande via SSH. Par exemple, j'ai un vieux scanner Canon accroché à un Raspberry Pi. Pour lancer un scan, je peux faire ceci :

ssh pi@raspsky 'scanimage -x 105 -y 149 --resolution 300 > scan.ppm'

Cependant, je veux maintenant envoyer une commande du Pi au Mac. La commande contient des guillemets simples :

osascript -e 'display notification "Image capture failed!"'

Mais, je dois mettre des guillemets simples autour de la commande entière. Je ne sais pas comment faire. J'ai essayé d'échapper aux guillemets simples, mais cela ne fonctionne pas.

1 votes

Est-ce que les réponses à cette question de stackoverflow de l'aide ?

0 votes

Oui. A l'origine, j'étais terriblement confus par ce post. Mais, à votre suggestion, je l'ai relu ce matin et j'ai trouvé la réponse que j'ai postée dans le commentaire ci-dessous.

2voto

SiliconChaos Points 73

Voici un exemple que j'ai testé : zsh -c 'osascript -e "display dialog \"hi\""'

osascript -e n'a pas besoin de entre guillemets, et cela fonctionne bien avec des guillemets doubles. Osascript dispose également d'un bon échappement, j'ai donc échappé les guillemets à l'intérieur d'osascript et utilisé des guillemets simples pour la commande de fermeture. Pour vous, ce serait :

ssh <username>@<Mac-host> 'osascript -e "display notification \"Image capture failed!\"'

Je l'ai testé sur mon pi, il fonctionne. Si vous voulez faire une seule commande, je vous recommande de créer un shell script qui contient

scanimage -x 105 -y 149 --resolution 300 > scan.ppm || ssh <username>@<Mac-host> 'osascript -e "display notification \"Image capture failed!\"'

et de l'exécuter via SSH sur votre Mac, car je ne pense pas que cela fonctionnera si vous mettez ceci à l'intérieur d'un autre ensemble de '', ce qui se produirait si vous envoyez cette commande entière via ssh.

0 votes

Cela fonctionne aussi : pi@raspsky:~ $ ssh mnewman@MrMuscle 'osascript -e '\''display notification "image capture failed"'\'''

0 votes

@user3439894 Je suis désolé, stack exchange les a supprimés ou je n'ai pas copié correctement. Je ne sais pas pourquoi. J'ai édité puis réintroduit. Ils ont fonctionné dans le terminal.

1 votes

Anonyme, RE : "l'échange de pile les a supprimés ou je n'ai pas copié correctement" -- Je peux vous assurer que vous n'avez pas copié correctement, comme Demande différente ne coupe pas código +1.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X