主机名变量不起作用

主机名变量不起作用

我在使用 RPiTC(Raspberry Pi Thin Client)的 Raspberry Pi 上。

我制作了一个带有主机名变量的脚本。它运行得很好,但今天当我启动脚本时,我看到了一些奇怪的东西。

我的主机名变量不起作用。我确信它来自我的脚本,我已经重新加载了我的操作系统的映像,它是相同的。当我使用旧脚本(完全相同的脚本)时,它就起作用了。

这是我的脚本:

do_start()
#Creating and checking my Hostname variable
ThisHost=$(hostname)
date=$(date)
echo "This is my hostname check:"
echo $ThisHost

#This will find the file in the /home/rpitc folder and save it to a variable:
dest=$(find /home/rpitc/ -name "$ThisHost.ica")
echo "This is my dest check:"
echo $dest
findfile="${dest##*/}"
echo "This is my findfile check with extension:"
echo $findfile
echo "This is my findfile check WITHOUT extension:"
echo "${findfile%.*}"

#If check to see if my hostname $ThisHost matches the file $findfile:
if test "$ThisHost" = "${findfile%.*}"

then
echo "Worked!"
echo $ThisHost "is correct. Connected the" $date >> /home/rpitc/skelog
exit 0
else
ThisHost=$(hostname)
tftp 10.1.0.203 << fin
get /test/${ThisHost}.ica
quit
fin
if [ -s ${ThisHost}.ica ]
then
exec iceweasel /home/rpitc/${ThisHost}.ica
else
zenity --error --text="Your hostname is incorrect."
rm /home/rpitc/${ThisHost}.ica
fi
fi

我已经通过 tftp 传输我的脚本,也许这是问题所在?过去我曾使用 tftp 协议传输相同的脚本,并且它有效......

答案1

您引用主机名变量。您正在使用的构造ThisHost=$(hostname)正在调用该hostname命令。由于该值为空,因此问题就变成了为什么您的系统不知道它的名称。 (您可以通过hostname自行键入并查看您的系统没有名称来确认这一点。)

根据RPi 论坛帖子/etc/hostname主机名应在引导时从文件中设置/etc/init.d/hostname.sh。所以你可能想检查文件的内容/etc/hostname;它应该包含一行文本,即所需的主机名。

或者,您可以使用命令动态设置主机名,例如hostname dillon(将主机名设置为“dillon”),但这仅在下次重新启动之前保持有效。

答案2

"第 5 行末尾缺少一个。

答案3

我的问题是我的tftp。现在我使用ftp并且它有效。

当我使用 tftp 时,我的文件在“DOS”中转换。

所以现在我使用 FTP,并在获取文件时在“UNIX”中转换文件。感谢您的帮助。

相关内容