Bash Script – запуск удаленного X-перенаправленного приложения

Возможно, я использую неправильные ключевые слова, чтобы найти ответ на это требование.

У меня есть GUI, установленный в удаленной Linux-системе, которая использует удаленное подключение к ней и инициирует приложение с перенаправлением X, например:

ssh -Y user.known@aServer.lan cd /home/user.known/TheAppDir/ sh ./ApplicationCommand 

с приведенным выше, у меня есть GUI, отображаемый на моем локальном Linux- сервере от aServer

Мой вопрос: как я могу написать bash на моем локальном Linux, который инициировал бы процесс выше за один раз? В идеале я хочу запустить скрипт bash, например:

 aServer.ApplicationCommand 

И у меня есть GUI, работающий локально в результате?

Если вы создаете файл aServer.ApplicationCommand (не забудьте chmod + x сделать его исполняемым) и поместите в него:

 #!/bin/bash ssh -Y user.known@aServer.lan "cd /home/user.known/TheAppDir/ ; sh ./ApplicationCommand" 

Это должно сработать. Вам все равно будет предложено ввести пароль, если вы не настроили ssh-ключи.

объяснение

SSH может использоваться строго для выполнения команды, а не для возврата сеанса, поместив команду после команды SSH. По существу при этом он открывает сеанс, запускает предоставленную команду и затем закрывает ее.

Поскольку вы хотите, чтобы выполнялось несколько команд, мы просто размещаем точку с запятой между ними, чтобы отделить их, и заключить в цитаты, чтобы она оставалась аргументом для команды SSH.

БОНУС

Переименуйте сценарий на aServer и измените сценарий на:

 #!/bin/bash ssh -Y user.known@aServer.lan "cd /home/user.known/TheAppDir/ ; sh ./$1" 

и вызывать его с помощью aServer ApplicationCommand , преимущество в этом состоит в том, если у вас есть несколько сценариев в TheAppDir которые вы хотите назвать, просто измените аргумент.

Я думаю, вы еще можете захватить $? чтобы убедиться, что сценарий выполнен правильно и создать сообщение об ошибке, если файл не был найден, но вы должны проверить это.