概して 、プロセス自体は単純です。sshdパッケージをアセンブリに追加し、 build.confファイルで rootのパスワードを param rootpasswdパラメーターで設定し、イメージを収集し、クライアントでsshを介してログインする必要があるときにロードしてオフにしますが、シャットダウンシグナルをすべての必要なクライアントに送信する方が興味深い不要なジェスチャーなしの1つのチーム。
なぜtelnetを使わないのか-sshはperlやexpectのような松葉杖なしで自動ログインを容易にするからです。 以下に実装方法を説明します。
そして、キーによる認証を使用して実装します。おそらく、すでに〜/ .sshフォルダーにキーがあり、他の目的に使用されている場合は、新しいキーを生成する必要はなく、公開キーをコピーするだけです
そうでない場合は、コマンド:cat id_rsa.pub >> authorized_keys
ssh-keygen -t rsa; ssh-add; cd ~/.ssh; cat id_rsa.pub >> authorized_keys
キーのパスリクエストを無視し、プライベートキーのパスワードを確認します。必要ありません。Enterキーを押してください。
〜/ .sshフォルダーでコマンドを実行すると、 id_rsa-秘密キー、 id_rsa.pub-公開キー、 authorized_keysキーの3つのファイルが作成されます。 authorized_keysをコンストラクタフォルダーThinstation packages / sshd / etc / skel / .sshに転送し、権利0700を.sshフォルダーに、0600をauthorized_keysファイルに設定し、イメージを収集し、クライアントを読み込んだ後、パスワードなしでクライアントにログインできます。
異なるマシンまたは異なるユーザーからクライアントにログインする必要がある場合、各ユーザーのキーを生成し、 ssh-addコマンドでそれらをsshエージェントに追加し、結果のid_rsa.pubのコンテンツを1つのauthorized_keysにコピーします 。
クライアントに初めて接続するときに、sshが「接続を続行してもよろしいですか(yes / no)」と尋ねました。sshコマンドに-oStrictHostKeyChecking = noオプションを追加するか、アカウントフォルダーで〜/を作成してサイレントにします。 ssh構成ファイルに書き込み、書き込みます: StrictHostKeyChecking = no 。
使用例:
ip.txtのクライアントシャットダウンスクリプト:
#!/bin/sh for ip in $(cat ip.txt) do ssh -oStrictHostKeyChecking=no root@$ip shutdown -h now& # , done
ipdia.txtリスト経由でXdialog経由で全員にメッセージを送信します。
#!/bin/sh for ip in $(cat ip.txt) do ssh -oStrictHostKeyChecking=no root@$ip DISPLAY=:0 Xdialog --infobox \ '" !!!\n !!! !!!\n !!!"' 300x200 0& # , # 300x200 -1 -1 . done
ここにメッセージがあります...
内容
少しきれいなのは、ip.txtリストを介してnotify- sendで全員にメッセージを送信することです(build.confにパッケージnotification-daemonを追加します )。
#!/bin/sh for ip in $(cat ip.txt) do ssh -oStrictHostKeyChecking=no root@$ip DISPLAY=:0 notify-send --expire-time=0 -u critical \ '!!!' '" \n \n \n "'& # , done
ここにメッセージがあります...
通知デーモンの依存関係からイメージを容易にするために、検証済みのgtk-2.0を削除して機能します。