Несколько замечаний, которые стоит попробовать:
- Инициализируйте имя хоста с первым IP:
ip_end = 1
hostname = socket.gethostbyaddr('192.168.0.{}'.format(ip_end))
Это поможет избежать любого странного поведения при запуске.В качестве примечания я немного изменил ваш код, чтобы он был лучше в соответствии с соглашениями об именах / форматированием строк только для вашего знания.
socket.gethostbyaddr
возвращает кортеж (hostname, aliaslist, ipaddrlist)
, однако вы конвертируете все это в str
.Это означает, что когда вы делаете hostname[0]
, вы берете только первый символ строки (в данном случае (
).
Попробуйте изменить цикл while
, чтобы он выглядел примерно так:
import socket, pyperclip
my_pc = socket.gethostname()
ip_end = 1
hostname = socket.gethostbyaddr('192.168.0.{}'.format(ip_end))[0]
while hostname != my_pc:
ip_end += 1
hostname = socket.gethostbyaddr('192.168.0.{}'.format(ip_end))[0]
pyperclip.copy('afterloop')
print(ip_end)