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
他の質問に任せます(通常は「リーダーの練習」として知られています)。