web-dev-qa-db-ja.com

Busyboxを実行しているルーターへの自動ログイン

私のルーターは、Busyboxが組み込まれたLinuxを実行しています。自動ログインしてWebブラウザを実行したいのですが。これが/etc/inittabファイル:

#BusyBoxの/ etc/inittab init(8)構成
#
#Copyright(C)1999-2004 by Erik Andersen 
#
#
#注、BusyBoxinitはランレベルをサポートしていません。ランレベルフィールドは
#BusyBoxinitによって完全に無視されます。ランレベルが必要な場合は、sysvinit。
#
#
#各エントリの形式:::: 
#
#:警告:これフィールドは、BusyBox init!
#
#に対して従来とは異なる意味を持ちます。idフィールドは、実行する指定プロセスの
#の制御ttyを指定するためにBusyBoxinitによって使用されます。このフィールドの内容は、
#が「/ dev /」に追加され、そのまま使用されます。このフィールドが
#である必要はありませんが、そうでない場合は奇妙な結果になる可能性があります。 this 
#フィールドを空白のままにすると、完全に無視されます。また、
#BusyBoxがシリアルコンソールが使用中であることを検出した場合、空でないIDフィールドを含むすべてのエントリ
#は実行されないことに注意してください。 BusyBox initは
#utmpでは何もしません。悪臭を放つutMPは必要ありません。
#
#:ランレベルフィールドは完全に無視されます。
#
#:有効なアクションは次のとおりです:sysinit、respawn 、askfirst、wait、once、
#restart、ctrlaltdel、shutdown。
#
#注:askfirstはリスポーンと同じように機能しますが、指定された
を実行する前に動作します。 #処理すると、「Enterキーを押してこの
#コンソールをアクティブにしてください」という行が表示されます。次に、ユーザーがEnterキーを押すのを待ってから、
#指定されたプロセスを開始します。
#
#注:認識されないアクション(initdefaultなど)により、initは[.____を発行します。 ]#エラーメッセージを表示してから、そのビジネスに進みます。
#
#:実行するプロセスとそのコマンドラインを指定します。
#
#注:BusyBox initは、inittabがなくても問題なく機能します。 inittabが
#で見つからない場合、デフォルトの動作は次のようになります。
 :: once:/ usr/sbin/usbconsole 
 :: sysinit:/etc/init.d/ rcS 
 :: ctrlaltdel:/ sbin/reboot 
 :: shutdown:/etc/init.d/rc.shutdown 
 :: shutdown:/ sbin/swapoff -a 
 :: shutdown:/ bin/umount -a -r 
 :: restart:/ sbin/init 
#
#/ dev/consoleが_not_であることを検出した場合シリアルコンソールの場合、
#も実行されます:
#tty2 :: askfirst:/ bin/sh 
#tty3 :: askfirst:/ bin/sh 
 #tty4 :: askfirst:/ bin/sh 
#
#起動時のシステム構成/初期化スクリプト。
#これは、シングルユーザーモードで起動する場合を除いて最初に実行されます。 
#
#:: sysinit:/etc/init.d/rcS 
#:: sysinit:/ linuxrc 
 
#/ bin /選択したttyでのsh呼び出し
#
#以下では、シェルコマンドの前に「-」を付けて、
#シェルにログインシェル。通常、これは
#ログインによって処理されますが、この場合はログインをバイパスしているため、BusyBoxでは
#これを自分で行うことができます... 
#
#コンソールで「askfirst」シェルを開始します(それが何であれ)
 
 :: askfirst:-/ bin/sh 
 
#「askfirst」を開始します/dev/tty2-4
# tty2 :: askfirst:-/ bin/sh 
#tty3 :: askfirst:-/ bin/sh 
#tty4 :: askfirstのシェル:-/ bin/sh 
 
#選択したttyの/ sbin/getty呼び出し
#tty4 :: respawn:/ sbin/getty 38400 tty5 
#tty5: :respawn:/ sbin/getty 38400 tty6 
 
#シリアル回線にgettyを配置する方法の例(端末用)
#:: respawn:/ sbin/getty -L ttyS0 115200 vt100 
 
私のルーターはBusyboxが組み込まれたLinuxを実行しています。自動ログインして、起動時にWebブラウザを実行したいと思います。これが `/ etc/inittabファイル`:
#
#モデム回線にgettyを配置する方法の例です。
#:: respawn:/ sbin/getty 57600 ttyS2 
 
#initプロセスを再起動するときに行うこと
#:: restart:/ sbin/init 
 
#再起動する前に行うこと
#:: ctrlaltdel:/ sbin/reboot 
#:: shutdown:/ bin/umount -a -r 
#:: shutdown:/ sbin/swapoff -a
2
unixnewbie

おそらく少し遅い答えですが、とにかく追加することにしました。

/etc/inittabファイルが空の場合、Ciscoロゴ(またはその他)にぶら下がっているのは予期される動作です。答えは、マシンにどのようにログインするかによって異なります。行のコメントを外す:

::respawn:/sbin/getty -L ttyS0 115200 vt100

/dev/ttyS0でログインプロンプトを提供できます。シリアル/dev/ttyS0を介して接続していると仮定します(これが実際にインターフェイスであることを確認してください。たとえば、私のマシンでは/dev/ttyPS0です)。自動ログインは、以下を追加することで実現できます。

ttyPS0::respawn:/bin/login -f <user>

これにより、<user>として自動ログインする必要があります。 /sbin/gettyとカスタムメイドの自動ログインユーティリティを使用する他のアプローチについて説明します ここ

/dev/tty3などを使用して自動的にログインする場合は、例を変更できます。ブラウザの自動起動は、Xと使用するブラウザによって異なります。 ~/.profileディレクトリ(通常は~/.bashrc)の${HOME}または/home/<user>を、最後に次のように追加して変更します。

startx
google-chrome-stable &

ただし、シリアル/ USBケーブルを介してルーターに接続している場合は、これが機能しない可能性があることに注意してください。

2
shycha

テストするルーターはありませんが、少なくともBuildroot + BusyBox + QEMUでは、次のfstabエントリが自動的にログインし、すべてが正常に機能しているように見えます。

::respawn:-/bin/sh

私が説明したように: Buildroot BusyBox initにrootユーザー名またはパスワードを入力せずに自動的にログインする方法は?

先頭の-を忘れないでください!それ以外の場合、TTYの相互作用は少し壊れています。 Ctrl + Cを実行してフォアグラウンドプログラムを強制終了する機能が失われます。

別のユーザーとしてログインする場合は、 https://unix.stackexchange.com/a/434799/32558 で説明されているように、/bin/loginを使用できますが、ダッシュを追加することをお勧めします。 /bin/shと同じ理由で、その前にも:

::respawn:-/bin/login -f user0