linux – systemd:网络启动后启动时启动服务(用于WoL目的)
我有一台计算机正在工作,我有时会从家里唤醒以便访问它但是当我们启动并从我们的DHCP服务器获取另一个IP地址时,我该如何访问它?
情况和我的“工作流程”如下: >从我的家用电脑,我连接到办公室的VPN 从理论上讲,只要我知道它的IP地址,我就可以通过SSH连接到我的办公室PC. >启动办公室后,PC会对办公室服务器执行SSH操作,并将自己的IP地址写入服务器上的某个文本文件中 所有计算机都运行Linux; Ubuntu 14.04在家,SLES在办公室服务器上,OpenSUSE 13.1在我的办公室PC上.这都不是问题. 为了实现这一切,我只需要在办公室PC上运行一个脚本,该脚本在网络启动并运行时在启动时运行. 我的脚本(publish_ip.sh)如下所示: # get own IP address: ip=$(ip addr show | awk '$1=="inet" && $2 !~ /127.0.0.1/ { split($2,a,"/"); print a[1]}'); # SSH to the office server (10.64.5.84) and write own IP address to a file there: ssh -x -e none 10.64.5.84 "echo $(date) $ip >> office_pc_address.txt" 要在启动时运行此脚本,我为我的办公室PC创建了一个systemd服务文件publish-ip.service: [Unit] Description=publishes own IP address Wants=network.target After=network.target [Service] Type=oneshot ExecStartPre=/usr/bin/sleep 30 ExecStart=/home/perldog/bin/publish_ip.sh User=perldog [Install] WantedBy=multi-user.target 但这是我在办公室电脑上总是得到的: linux-tz7m:/usr/lib/systemd/system # systemctl status publish-ip.service publish-ip.service - publishes own IP address Loaded: loaded (/usr/lib/systemd/system/publish-ip.service; enabled) Active: failed (Result: exit-code) since Mon 2016-02-29 12:17:34 CET; 4 days ago Process: 1688 ExecStart=/home/perldog/bin/publish_ip.sh (code=exited,status=255) Process: 1016 ExecStartPre=/usr/bin/sleep 30 (code=exited,status=0/SUCCESS) Main PID: 1688 (code=exited,status=255) Feb 29 12:17:34 linux-tz7m publish_ip.sh[1688]: ssh: connect to host 10.64.5.84 port 22: Network is unreachable 显然我的服务启动并调用我的脚本,但该脚本中的SSH命令失败,网络无法访问. 我尝试了我的服务文件中的所有内容,以便它只在网络启动后运行,但我没有得到它.我试过Wants = network.target, 问题:我的服务文件中需要进行哪些设置才能在使用SSH访问办公室服务器后才能运行? 注意:当我在办公室并且我的办公室PC正常运行时,我的脚本和服务都运行良好,即systemctl start publish-ip.service 解决方法
曾经有一个名为arpwatch的工具,它记录了所有联网设备的IP地址和MAC地址,因此您可以简单地为计算机的MAC获取IP并获取IP.
还有一个名为arping的工具,你可以通过输出获取MAC地址. 另一种选择是在您的计算机上保持随机端口打开,并使用nmap扫描整个网络以查找该特定端口,或者为整个网络nmap显示已启动且grep为您的MAC地址的主机… nmap -sP 192.168.1.0/24 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |