ツールセットの歴史
あなたはそのようなツールが欲しい最初の人ではありません。人々はこのようなツールを30年もの間望んでいました。そして、それらもほぼその間存在していました。
この種の最も初期のツールは、ダニエルJ.バーンスタインの「pty」パッケージで、リッチザルツによって「ギンスナイフ」と記述されていました。「pty」パッケージのバージョン4は、1992年に発行されましたcomp.sources.unix
(ボリューム25号127〜135)。World Wide Web上で引き続き検索可能です。ポール・ビクシーは当時それについて次のように説明しています。
何と言えばいい?スライスし、さいの目に切り、皿を洗い、犬を散歩させます。それは「うまくいく」、つまり、指示に従えば、髪を引っ張ったり、歯を噛んだり、他の標準的な移植作業をすることなく作業パッケージを手に入れることができます。
バーンスタインは、1999-04-07以前にこれを「ptyget」パッケージで更新しました。
新しい疑似ttyアロケーター、ptygetを作成しました。アルファ版はにありftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
ます。ptygetメーリングリストがあります。参加するには、空のメッセージをに送信し
djb-ptyget-requ...@koobera.math.uic.edu
ます。ptygetのインターフェイスをゼロから設計しました。ptyよりもはるかにモジュール化されています。基本的なptyインターフェースは、現在3つの部分に分割されています。
ptyget
:小さな、低レベルのプログラム—パッケージ内で唯一のsetuidプログラム—新しい擬似ttyを割り当て、選択したプログラムに渡します
ptyspawn
:疑似ttyの下で子プロセスを実行し、終了するのを待って停止を監視する別の小さなプログラム
ptyio
:もう少しだけ大きい、データを前後に移動するプログラム
古いGinsuナイフpty
は現在綴られていますptybandage
、これはの同義語ですptyget ptyio -t ptyspawn
; pty -d
、ネットワークプログラムをpseudo-ttyにアタッチするためのスペルptyrun
は、の同義語ですptyget ptyio ptyspawn
。そして、nobuf
の同義語です
ptyget ptyio -r ptyspawn -23x
。セッション管理機能を別のパッケージに分割しました。
その別個のパッケージは「sess」パッケージでした。
ちなみに、「ptyget」は、Berstein自身の未公開の「redo」ビルドシステムの非常に初期のバージョンであり、公開されている数少ないインスタンスの1つを例示することで有名です。 dependon
はの明確な前駆体redo-ifchange
です。
使用法
ptybandage
ptybandage
ログインセッションで通常人々が望むものです。主な使用例は、実際にシェルパイプラインにある場合でも、標準入力、出力、またはエラーが端末に接続されているかどうかに敏感なプログラムを作成したり、標準ファイル記述子をファイルにリダイレクトしたりすることです。
それは(もちろん、適切な外部コマンドでなければならない)を実行するコマンドを受け取り、それが標準入力、出力、およびエラーをに至るもの接続端子に接続されていることを考えているような方法でそれを実行するptybandage
のを元の標準入力、出力、およびエラー。
ジョブ制御シェルで実行する際の微妙な問題を処理し、端末の停止文字ptybandage
が停止するだけでなく、内部端末に接続されているプログラムの実行も停止するようにします。
ptyrun
ptyrun
人々は通常、TCPネットワークサーバーに必要なものです。その主な使用例は、端末がセットアップされていないリモート実行環境であり、端末がない場合に希望どおりに動作しないプログラムを実行します。
ジョブ制御シェルの下で実行されることは想定されていません。実行中のコマンドが停止シグナルを受信した場合、単に再起動されます。
利用可能なツールセット
Dru Nelsonは、「pty」バージョン4と「ptyget」の両方を公開しています。
Paul Jarcは、オペレーティングシステムが実際に提供しなくなったオリジナルのオペレーティングシステム固有の疑似端末デバイスioctlを処理しようとする修正版のptygetを公開しています。
noshソースパッケージには、類似のスクリプトptybandange
とptyrun
スクリプトが付属しており、これらはLaurent Bercotのexecline
ツールとnosh パッケージの独自の擬似端末管理コマンドを使用します。noshバージョン1.23以降、これらはnosh-terminal-extrasパッケージに事前パッケージされています。(以前のバージョンは、ソースからビルドした人にのみ提供していました。)
いくつかの例を使用します
ptybandage
AIX上でJurjgen Oskamを使用して、ヒアドキュメントから入力を明示的に開いてパスワードプロンプトの制御端末を読み取るプログラムに入力します。
$ ptybandage dsmadmc << EOF> uit.txt
ヨスカム
パスワード
クエリセッション
クエリプロセス
終了する
EOF
Andy Bradfordはptyrun
、デーモンツールとucspi-tcpの下でOpenBSD を使用しbgplgsh
て、ネットワーク経由で対話型ルーター制御プログラムにアクセスできるようにし、端末と通信していると考えさせます。
#!/ bin / sh
exec 2>&1
exec envuidgid rviews tcpserver -vDRHl0 0 23 ptyrun / usr / bin / bgplgsh
参考文献