Отправка команд и строк к Terminal.app с Applescript

#include заменит его строку литеральным содержанием файла. Если файл не закончится новой строкой, строка, содержащая #include, который сдержался, то это объединится со следующей строкой.

49
задан Petruza 9 December 2009 в 04:28
поделиться

5 ответов

Я могу ошибаться, но я думаю, что интеграция с терминалом Applescript - это одноразовая сделка ... То есть каждый вызов do script подобен открытию другого окна терминала , поэтому я не думаю, что вы вообще можете с ним взаимодействовать.

Вы можете скопировать открытые ключи SSH, чтобы предотвратить запрос пароля, а затем выполнить все команды, объединенные вместе (предупреждение : следующее полностью непроверено ):

tell application "Terminal"
    activate
    do script "ssh jdoe@example.com '/home/jdoe/dosomestuff.sh && /home/jdoe/dosomemorestuff.sh'"
end tell

В качестве альтернативы вы можете заключить ssh и последующие команды в сценарий оболочки, используя Expect , а затем вызвать указанный сценарий оболочки из вашего Applescript.

1
ответ дан 7 November 2019 в 11:36
поделиться

Петруза,

Вместо использования нажатия клавиш используйте код клавиши.
Следующий пример должен работать для вас.

tell application "System Events"
    tell application process "Terminal"
        set frontmost to true
        key code {2, 0, 17, 14}
        keystroke return
    end tell
end tell

В приведенном выше примере будут отправлены символы {date} в Терминал, а затем нажатие клавиши
войдет и запустится команда. Используйте приведенный выше пример
с любыми необходимыми кодами клавиш. и вы сможете делать то, что пытаетесь сделать.

1
ответ дан 7 November 2019 в 11:36
поделиться

настроить SSH без пароля ( ssh-keygen , затем добавить ключ в ~ / .ssh / authorized_keys на сервере). Сделайте запись в ~ / .ssh / config (на рабочем столе), чтобы при запуске ssh mysqlserver он переходил к user @ hostname ... Или создайте псевдоним оболочки, например gotosql, который расширяется to ssh user @ host -t 'mysql_client ...' , чтобы запустить клиент mysql в интерактивном режиме на сервере.

Тогда вам, вероятно, понадобится чей-то ответ для сценария процесса после этого, поскольку я не 'Не знаю, как установить команды запуска для mysql.

По крайней мере, это убережет ваш пароль ssh от сценария!

1
ответ дан 7 November 2019 в 11:36
поделиться

Как заявил EvanK, каждая строка скрипта do откроет новую однако вы можете запустить
две команды с одним и тем же сценарием do, разделив их точкой с запятой. Например:

tell application "Terminal"
    do script "date;time"
end tell

Но ограничение, похоже, составляет две команды.

Однако вы можете добавить «в окне 1» к команде do script (для каждого сценария do после первого), чтобы получить тот же эффект и продолжить чтобы запустить столько команд, сколько вам необходимо в одном окне:

tell application "Terminal"
    do script "date"
    do script "time" in window 1
    do script "who" in window 1
end tell


Обратите внимание, что я просто использовал команду who, date и time в качестве примера ... replace с любыми командами, которые вам нужны.

15
ответ дан 7 November 2019 в 11:36
поделиться

как насчет чего-то вроде этого:

tell application "Terminal"

    activate
    do shell script "sudo dscl localhost -create /Local/Default/Hosts/cc.josmoe.com IPAddress 127.0.0.1"
    do shell script "sudo dscl localhost -create /Local/Default/Hosts/cc.josmos2.com IPAddress 127.0.0.1"

end tell
0
ответ дан 7 November 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: