Python 3.3+Linux · macOSsocketфункция
socket.sethostname()
имена и адреса
Меняет сетевое имя машины на Linux и macOS; требует прав администратора. На Windows функции нет.
Синтаксис
socket.sethostname(name)
Без прав root (CAP_SYS_ADMIN) вызов падает PermissionError. Имя меняется для всей системы (в Linux — для текущего UTS-пространства имён), а не для процесса, и только до перезагрузки: /etc/hostname функция не трогает. На Windows атрибута нет вовсе, поэтому переносимый код проверяет hasattr(socket, 'sethostname').
Примеры
import socket
print(hasattr(socket, 'sethostname')) # → ? True на Unix, False на Windows
try:
socket.sethostname('x' * 300) # слишком длинное имя: откажут даже root
except OSError as e:
print(type(e).__name__) # → ? PermissionError без прав, OSError у root
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности