PTY セッションを作成する
sandbox.pty.create() を使用して、対話型の bash シェルを開始できます。
PTY は
TERM=xterm-256color を使用して対話型の bash シェルを起動するため、ANSI カラーやエスケープシーケンスは期待どおりに動作します。タイムアウト
タイムアウト設定は構成可能で、PTY セッションがどのくらいの時間アクティブなままでいるかを決定します。JavaScript ではtimeoutMs: 0、Python では timeout=0 を設定することで、PTY セッションを無期限に開いたままにできます。デフォルトでは、セッションは 60 秒のタイムアウトを使用します。
PTY に入力を送信する
JavaScript ではsendInput()、Python では send_stdin() を使用して、ターミナルにデータを送信できます。
JavaScript では、sendInput() は Promise を返し、ターミナル出力は直接返されるのではなく、onData コールバックを通じて配信されます。
Python では、send_stdin() は同期的に完了し、ターミナル出力は wait() に渡された on_pty コールバックを通じて配信されます。
ターミナルのサイズを変更する
ユーザーがターミナルウィンドウのサイズを変更したときに、resize() を使用して PTY に通知できます。
cols と rows の値は、ピクセルではなく文字数で表されるターミナルの寸法を示します。
切断と再接続
PTY セッションは、クライアントが切断した後もアクティブなままにできます。セッションからデタッチし、後で新しいデータハンドラーを使って再接続できます。 これは、ネットワーク中断からの復旧、複数クライアントからのターミナルアクセスのサポート、再接続をまたいだセッション状態の保持に使用できます。PTY を終了する
kill() を使用して、PTY セッションを終了できます。
PTY の終了を待機する
ユーザーがexit と入力した場合など、ターミナルセッションが終了するまでブロックするには、wait() を使用できます。
対話型ターミナル(SSH のような)
上記で説明した同じsandbox.pty API を使用して、raw mode、stdin の転送、ターミナルのリサイズイベントを処理することで、SSH のような完全に対話的なターミナルを作成できます。