Использование AppleScript для отправки команд и строк в Terminal.app с отключенным эхо - PullRequest
1 голос
/ 03 апреля 2011

то, чего я хочу достичь, это что-то вроде того, что описано в этом этом вопросе .В основном используется AppleScript для отправки команд в Terminal.app.

Однако есть такое поведение, которое мне не нужно: каждая команда, отправленная с использованием директивы do script, отображается в терминале.В настоящее время я интегрирую AppleScript с Cocoa, и иногда программное обеспечение отправляет конфиденциальную информацию, такую ​​как пароль, в Терминал.

Есть ли способ отключить это поведение, например, директива @echo off в пакетных файлах DOS?

РЕДАКТИРОВАТЬ

Чтобы уточнить мой вопрос, я уточню подробнее.Предположим, у нас есть AppleScript, такой как этот:

tell application "Terminal"
    set currentTab to do script "login"
    do script "username" in currentTab
    do script "password" in currentTab
end tell

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

Last login: Tue 5 Apr hh:mm:ss on ttys001
login        <--\
username     <----unwanted echoes
password     <--/
<machine>:~ <user>$ login
username: username
password: ****
... (interactive Terminal session)

Однако этого не происходит, если Terminal.app не запускается при выполнении сценария.

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Вы «печатаете» вещи до того, как оболочка сможет ответить на них (в данном случае, до того, как login сможет отключить эхо). Такие инструменты, как ожидают , решают проблему сценариев произвольных утилит командной строки, что было бы лучшим решением в общем случае, но из вашего вопроса неясно, что вы пытаетесь сделать.

Какую команду вы пытаетесь написать и почему вы делаете это через Терминал?

0 голосов
/ 04 апреля 2011

Чтобы скрыть команды в Terminal.app, сначала запустите эту команду:

stty -echo

Чтобы снова отобразить команды:

stty echo

Вместо использования Terminal.app вы также можете запуститькоманды непосредственно из AppleScript:

set theResult to do shell script "cal -y 2011"

Или, что еще лучше, запускайте команды непосредственно из Objective-C с помощью NSTask.
(Поскольку ваше приложение использует Какао, я предполагаю, что оно было (частично)написано в Objective-C)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...