ここに最初の投稿。 CentOS 6マシンに対していくつかのテストを実行しようとしていますが、テストでネットワークが無効になるため、シリアルポートを介して通信します。
Bashルートシェルが含まれるようにttyS1をセットアップするupstartジョブを作成しました。私が使用した:
/sbin/agetty -n -l /bin/bash ttyS1 115200 vt102
これはハックであり、ログインプログラムとして/ bin/bashを実行します。動作しますが、--rcfile
を/bin/bash
に渡したいです(そうしないと、rootとして実行されているにもかかわらず、「bash:/root/.bashrc:Permissiondenied」という望ましくない出力が表示されます。 )。
注:使用されているagettyのバージョンには、-versionも--login-optionsもありません。
agetty
は、-l
オプションでプログラムが実行されることを期待しています。それを(たとえば)Perlスクリプトにし、thatにパラメーターを提供させることができます。たとえば、このスクリプトをmyshell
と呼びます。
#!/usr/bin/Perl
exec 'bash --rcfile myprofile'
myshell
コマンドでagetty
のパス名を使用します。
bash
(またはsh
)プロファイルを読み取らないため、Perlを使用しました。 /bin/sh
を実行するスクリプトを使用すると、ユーザーの.profile
を読み取ることができます(これはあなたの意図に反しているように見えました)。 exec
機能は、他のスクリプト言語(sh
およびbash
を含む)で提供されます。
やり過ぎだと思うかもしれませんが、gettyを使用してシリアル回線でシェルを実行するのではなく、 [〜#〜] slip [〜#〜] 、シリアル回線インターネットプロトコルを使用してみてください。これにより、シリアルポートがネットワークインターフェイスに変わり、sshなどを使用して複数のログインを同時に接続したり、rsyncを使用してファイルを送信したりできます。これらはすべて、信頼性とエラー検出の利点があります。
カーネルがそれをサポートしていると仮定すると、セットアップと使用は簡単です(通常はそうです)。最も簡単な方法は、slattach
コマンドを使用することです。これは通常、net-tools
パッケージに含まれています。 1台のマシンでコマンドを実行します
Sudo slattach -p cslip -s 19200 /dev/ttyS0 &
Sudo ifconfig sl0 192.168.1.2 pointopoint 192.168.1.3
ここで、最初のコマンドはボーレートとシリアルデバイスを指定し、2番目のコマンドはそのマシンと他のマシンのIPアドレスを提供します。もう一方の端では、2つのIPアドレスを交換して、同じコマンドを実行します。まだ使用していないアドレスのセットを選択します。