Старый postinstall
This commit is contained in:
commit
4337a3f94e
349 changed files with 21945 additions and 0 deletions
|
|
@ -0,0 +1,76 @@
|
|||
import subprocess
|
||||
from dialog import Dialog
|
||||
import os
|
||||
|
||||
HOSTNAME_FILE = "/etc/hostname"
|
||||
HOSTS_FILE = "/etc/hosts"
|
||||
|
||||
|
||||
def get_current_hostname():
|
||||
try:
|
||||
with open(HOSTNAME_FILE, 'r') as f:
|
||||
return f.read().strip()
|
||||
except IOError as e:
|
||||
print(f"Ошибка при чтении hostname: {e}")
|
||||
return "localhost"
|
||||
|
||||
|
||||
def change_hostname():
|
||||
d = Dialog(dialog="dialog")
|
||||
current_hostname = get_current_hostname()
|
||||
|
||||
code, new_hostname = d.inputbox(
|
||||
f"Текущее доменное имя: {current_hostname}\nВведите новое доменное имя:",
|
||||
init=current_hostname
|
||||
)
|
||||
|
||||
if code != d.OK:
|
||||
return None
|
||||
|
||||
if new_hostname == current_hostname:
|
||||
d.msgbox("Введенное доменное имя совпадает с текущим. Изменения не требуются.")
|
||||
return None
|
||||
|
||||
# Проверка валидности hostname
|
||||
if not is_valid_hostname(new_hostname):
|
||||
d.msgbox("Недопустимое доменное имя. Используйте только буквы, цифры и дефисы.")
|
||||
return None
|
||||
|
||||
# Подтверждение изменения
|
||||
code = d.yesno(f"Вы уверены, что хотите изменить доменное имя на {new_hostname}?")
|
||||
if code != d.OK:
|
||||
return None
|
||||
|
||||
return new_hostname
|
||||
|
||||
|
||||
def is_valid_hostname(hostname):
|
||||
if len(hostname) > 63:
|
||||
return False
|
||||
if hostname[-1] == "-":
|
||||
return False
|
||||
allowed = set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-")
|
||||
return all(char in allowed for char in hostname)
|
||||
|
||||
|
||||
def apply_hostname_change(new_hostname):
|
||||
try:
|
||||
subprocess.run(["sudo", "hostnamectl", "set-hostname", new_hostname], check=True)
|
||||
if os.path.exists(HOSTS_FILE):
|
||||
subprocess.run(["sudo", "sed", "-i", f"s/^127.0.1.1.*/127.0.1.1\t{new_hostname}/", HOSTS_FILE], check=True)
|
||||
return True
|
||||
except subprocess.CalledProcessError as e:
|
||||
Dialog(dialog="dialog").msgbox(f"Ошибка при изменении доменного имени: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def run_change_hostname():
|
||||
return change_hostname()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
new_hostname = run_change_hostname()
|
||||
if new_hostname:
|
||||
print(f"Новое доменное имя: {new_hostname}")
|
||||
else:
|
||||
print("Изменение доменного имени отменено.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue