スクリーンが取り付けられたRaspberryPiがあります。ログインプロンプトが表示されます。キーボードもマウスも接続されていないので、そのままにしておきたいと思います。ネットワークからssh経由でログインしますが、ssh経由で入力したコマンドとその出力を添付画面で確認したいと思います。これは可能でしょうか?
入力と出力のリダイレクトのみを含む、より「直接的な」ソリューションがあるかどうかはわかりませんが、 screen を使用してこのようなものを作成することができました。アイデアは、screen
セッション内ですべての作業を行い、セッションに2回接続することです。1回は作業中のSSHターミナルから、もう1回は接続されたディスプレイからです。
まず、付属のディスプレイの端末名を知っておく必要があります。テストするrPIはありませんが、直接接続された画面は通常のLinuxビデオコンソールにマップされると想定しているため、おそらく/dev/tty1
になります。
screen
がインストールされていることを確認してください新しいスクリーンセッションを作成する
screen
他の端末から同じ画面セッションに接続します。
この機能の使用目的は、ローカルキーボードを使用してログインし、screen -r -x
(-r
再開セッションおよび-x
既存セッションへのマルチアタッチの場合)と入力することです。この場合、セッションに接続する端末に実際にログインしていません。そのため、目的の端末への入力と出力を、接続元の端末である「納得」画面にリダイレクトします。それはハックですが、私にとってはうまくいきました。
screen -r -x </dev/tty1 >/dev/tty1 2>&1 & disown
RPIのビデオコンソールの端末の名前が/dev/tty1
ではなく他の名前である場合は、キーボードを1回だけ接続し、ローカルでログインしてtty
と入力することでそれが何であるかを知ることができます。促す。
興味深いことに、私はscreen -x
またはtmux attach
もCeladaのソリューションのように考えましたが、initを(/etc/inittab
または/etc/init
または/etc/systemd
で)設定することをお勧めします。 supervisor 起動時にgetty-on-screenセッションを自動的に起動します。
スーパーバイザーの作業構成:
[program:screen]
command=bash -c 'chvt 9 && TERM=linux exec screen getty tty </dev/tty9 >/dev/tty9 2>&1'
autostart=true
autorestart=true
自動的に/dev/tty9
に切り替わり、gettyを実行している画面を起動してログインプロンプトを表示します。他のsshセッションから、Sudo screen -x
を実行してこのコンソールセッションに接続し、次のように入力できます。 Ctrl+AD セッションから切り離します。
画面セッションはrootによって実行されるため、画面セッションをアタッチするにはroot権限が必要です。画面のマルチユーザーモードを有効にすることもできますが、/usr/bin/screen
にsetuidが必要であるため、セキュリティ上の問題が発生します。詳細については、 画面マニュアル を参照してください。