起動時にLinux Mintデスクトップのホスト名を任意の値に変更する

起動時にLinux Mintデスクトップのホスト名を任意の値に変更する

Linux Mint(17.1 Rebecca、Cinnamon 64ビット)を実行しているコンピュータで、ホスト名を任意の英数字文字セットに変更するのに問題があります。

次のスクリプトは、ホスト名を任意の英数字文字セットに変更します。

#!/bin/bash

### BEGIN INIT INFO
# Provides:          randomhostname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Changing hostname to random value
# Description:       Changing hostname to random value
### END INIT INFO

old=$(cat /etc/hostname)
new=$(tr -dc 'A-Z0-9' < /dev/urandom | head -c12)
sed -i "s/$old/$new/g" /etc/hosts
sed -i "s/$old/$new/g" /etc/hostname

exit 0

理想的には、システムを再起動せずにホスト名を変更できますが、後で実行する必要があり、/etc/init.d/hostname.sh startそのバージョンのLinux Mintにファイルが存在しないため(他のバージョンは不明)、再起動する必要がありました。効力を発揮します。したがって、起動時にこれを行うのが現在では次善策のようです。

ファイルを次に移動しました。/etc/init.d/ディレクトリを実行可能にしますsudo chmod +x randomhostname。その後、私はそれを開始シーケンスに追加しましたsudo update-rc.d randomhostname defaults

システムを再起動してLinux Mintにログインすると、ホスト名が変更されたことがわかります/etc/ホスト名そして/etc/ホスト、この場合はYKNG7Z4PJD7H。ただし、端末(ユーザー名@BFZJ7LB0BKADなど)を使用している場合はこの内容は表示されず、sudoを使用すると次のメッセージが表示されます。

username@BFZJ7LB0BKAD ~ $ sudo true
sudo: unable to resolve host BFZJ7LB0BKAD

この問題は、スクリプトが間違った時点で実行され(おそらく一部のサービスがすでに開始された後)、以前の変更が適用されるようにシステムがまだ再起動されていないために発生したようです。

再起動せずに変更が適用されるように、起動順序にこのようなスクリプトを追加する正しい方法は何ですか?それともこれを達成するより良い方法はありますか?

この問題に関してご協力いただきありがとうございます。

解決策
〜のようにロエマhostname "$new"変更を適用するには、スクリプトの最後に追加するだけでよいと指摘しました。また、クライアントが新しいホスト名を使用してネットワークに登録することを強制するために、ネットワーク管理者サービスの停止と開始を追加しました。

#!/bin/bash

### BEGIN INIT INFO
# Provides:          randomhostname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Changing hostname to random value
# Description:       Changing hostname to random value
### END INIT INFO

service network-manager stop

old=$(cat /etc/hostname)
new=$(tr -dc 'A-Z0-9' < /dev/urandom | head -c12)
sed -i "s/$old/$new/g" /etc/hosts
sed -i "s/$old/$new/g" /etc/hostname
hostname "$new"

service network-manager start

exit 0

ベストアンサー1

書き換え後にホスト名を設定していないようです/etc/hostname。これによりトリックが実行されますsed。 2行の後に追加してください。

hostname "$new"

DHCPを使用していて問題が解決しない場合は、次の点を確認してください。ホスト名を変更しましたが、なぜ私のbash PS1プロンプトは変更されませんか?これがあなたの状況に関連していることを確認してください。

"Rebecca"が使用されsystemd、ホスト名を設定するために使用されるファイルは/etc/init/hostname.conf。追加する方法ホスト名の変更スクリプトの作成はsystemd他の質問に任せます(通常は「リーダーの練習」として知られています)。

おすすめ記事