私が達成したいのは、this questionに記載されているものです。基本的にAppleScriptを使用してTerminal.appにコマンドを送信します。AppleScriptを使用してコマンドと文字列をTerminal.appにエコーオフで送信
しかし、この動作は望ましくありません。do script
ディレクティブを使用して送信されたすべてのコマンドは、端末にエコーされます。私は現在、AppleScriptをCocoaに統合しています。また、ソフトウェアがパスワードなどの機密情報を端末に送信することもあります。
DOSバッチファイルの@echo off
ディレクティブなど、この動作を無効にする方法はありますか?
EDIT
私の質問を明確にするために、私はもっと詳しく説明します。私は、ターミナルアプリケーションがすでに開いている任意のターミナルウィンドウの有無にかかわらず、実行されている場合は、それが供給される前に、do script
指示のコマンドがエコーされることに気付いた
tell application "Terminal"
set currentTab to do script "login"
do script "username" in currentTab
do script "password" in currentTab
end tell
:我々はそのようなこの一つとしてAppleScriptを持っていると仮定シェル。ターミナルでは、上記のスクリプトの結果を説明するために:Terminal.appは、スクリプトの実行時に実行されていない場合
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を使用しての
stty echo
:
stty -echo
再びコマンドを表示するには:最初にこのコマンドを実行Terminal.appでコマンドを非表示にするには
私はCocoaアプリケーションからsshログインをスクリプトしようとしています。だから私はTerminal.appが必要です。 – avee
@avee:Expectを使用しないと、その機能のいくつかのビットが再実装されてしまうでしょう: "wait for" login: ";ユーザー名を送信する。 "assword:"を待つ。パスワードを送る。 ... " –
@Chris Johnsen @Nicholas Riley:ありがとう、私はExpect – avee