Raspberry主机名更改但不是真的

时间:2018-10-15 21:32:35

标签: python networking raspberry-pi host hostname

我在/ etc / hosts以及/ etc / hostname中更改了主机名

主机:

127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

127.0.0.1       newhost

主机名:

newhost

是的

>>> socket.gethostbyname('newhost')
'10.0.0.45'

但是

import socket
>>> socket.gethostbyaddr('10.0.0.45')
('raspberrypi', [], ['10.0.0.45'])

有时候,我使用了不同的名称,并且两种方式都起作用,然后我对其进行了更改,并不断向我显示raspberrypi。我相信一定有一些默认文件触发此操作。任何人? 提前感谢

2 个答案:

答案 0 :(得分:0)

如果我正确地说您只是想更改pi的主机名,并且您正在运行raspbian,那么raspberry pi配置中应该有一个选项可以对其进行更改

答案 1 :(得分:0)

raspi-config似乎没有很好的文档记录,但是更改主机名的解决方案是

sudo raspi-config nonint do_hostname ${NEW_HOSTNAME}
sudo reboot # Must reboot to see change

这是因为raspi-config是bash脚本,并且具有可以使用的非交互模式。截至目前,这是我们试图在下面触发的内容:

do_hostname() {
  if [ "$INTERACTIVE" = True ]; then
    whiptail --msgbox "\
Please note: RFCs mandate that a hostname's labels \
may contain only the ASCII letters 'a' through 'z' (case-insensitive), 
the digits '0' through '9', and the hyphen.
Hostname labels cannot begin or end with a hyphen. 
No other symbols, punctuation characters, or blank spaces are permitted.\
" 20 70 1
  fi
  CURRENT_HOSTNAME=`cat /etc/hostname | tr -d " \t\n\r"`
  if [ "$INTERACTIVE" = True ]; then
    NEW_HOSTNAME=$(whiptail --inputbox "Please enter a hostname" 20 60 "$CURRENT_HOSTNAME" 3>&1 1>&2 2>&3)
  else
    NEW_HOSTNAME=$1
    true
  fi
  if [ $? -eq 0 ]; then
    echo $NEW_HOSTNAME > /etc/hostname
    sed -i "s/127.0.1.1.*$CURRENT_HOSTNAME/127.0.1.1\t$NEW_HOSTNAME/g" /etc/hosts
    ASK_TO_REBOOT=1
  fi
}