#include
заменит его строку литеральным содержанием файла. Если файл не закончится новой строкой, строка, содержащая #include
, который сдержался, то это объединится со следующей строкой.
Я могу ошибаться, но я думаю, что интеграция с терминалом 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.
Петруза,
Вместо использования нажатия клавиш используйте код клавиши.
Следующий пример должен работать для вас.
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}
в Терминал, а затем нажатие клавиши
войдет и запустится
команда. Используйте приведенный выше пример
с любыми необходимыми кодами клавиш.
и вы сможете делать то, что пытаетесь сделать.
настроить SSH без пароля ( ssh-keygen
, затем добавить ключ в ~ / .ssh / authorized_keys
на сервере). Сделайте запись в ~ / .ssh / config
(на рабочем столе), чтобы при запуске ssh mysqlserver он переходил к user @ hostname ... Или создайте псевдоним оболочки, например gotosql, который расширяется to ssh user @ host -t 'mysql_client ...'
, чтобы запустить клиент mysql в интерактивном режиме на сервере.
Тогда вам, вероятно, понадобится чей-то ответ для сценария процесса после этого, поскольку я не 'Не знаю, как установить команды запуска для mysql.
По крайней мере, это убережет ваш пароль ssh от сценария!
Как заявил 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
с любыми командами, которые вам нужны.
как насчет чего-то вроде этого:
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