搜索我的服务器
的IP地址,我要到工作站的电源关闭之后连接。 IP地址已更改。但是我不想连接显示器并键入ifconfig
命令。我知道IP地址是192.168.1.XXX。我如何编写一个循环来搜索IP地址?搜索我的服务器
我经常使用ssh [email protected]
登录到工作站。
这是在我的工作(失败虽然),在终端I型:
for i in {1..255}
do
ssh myname @192.168.1.$i
done
返回的结果是:
ssh: connect to host prefix.1 port 22: Connection refused
ssh: connect to host prefix.2 port 22: Connection refused
ssh: connect to host prefix.3 port 22: Connection refused
ssh: connect to host prefix.4 port 22: No route to host
ssh: connect to host prefix.5 port 22: Connection refused
ssh: connect to host prefix.6 port 22: Connection refused
ssh: connect to host prefix.7 port 22: No route to host
ssh: connect to host prefix.8 port 22: Connection timed out
ssh: connect to host prefix.9 port 22: No route to host
每次当回报No route to host
,它将挂断很长一段时间尝试下一个号码。我怎样才能让它快速? 问题是如何快速跳过错误的IP。我可以在ssh命令中使用超时选项吗?
另一个问题是,当我达到一个打开ssh登录(要求我输入密码)的ip,但它不是我的工作站。我必须ctrl-c
杀死这个循环,然后再次从这个位置开始。我怎样才能自动做到这一点?
,答案已经在问题,即设置一个超时,如:
for i in {1..255}
do
ssh -o ConnectTimeout=1 myname @192.168.1.$i
done
您只需要4分钟左右去了所有的数字。如果有人知道如何设定小于1的时间,它会更快。
您可以使用nmap 192.168.1.0/24 -p 22 --host-timeout 5ms
这将扫描您的网络并显示所有与港口22开放的设备。你的工作站将在其中。
如果你有机会到DHCP服务器(例如,您的无线路由器),那么你可以看到哪些IP地址最近分别担任。
你是一个正确的道路上,但它会很难让所有的优点和缺点没有。
您可以尝试登录到一个成功,然后停止:
for i in {1..255}; do
ssh [email protected]$i && break
done
优点:不要频繁一旦连接已经完成。
缺点:需要很长的时间才能达到列表的末尾。假设你没有错误地结束你的会话,否则它会一直试图结束。 (可以缓解)
你可以尝试和并行连接:
for i in {1..255}; do
ssh [email protected]$i &
done
如果你的设置是足够幸运,所有,但一个将失败,并没有I/O,你可以前景中的成功的一个。
优点:速度更快
缺点:未经检验的,更棘手的设置(需要与作业控制交互的shell)
如果你知道你的工作站的MAC地址,安装arp-scan
(或只是做端口与nmap
扫描(已在其中的一个答案)),并使用mac地址做grep
。然后连接ssh
。
这比遍历局域网上未知的IP地址更容易。
更多arp-scan
:https://superuser.com/questions/236476/find-an-ip-address-by-mac-address-on-lan
您可以使用它,但对于什么?一些详细说明会有帮助。 :) – ojrask
我已经扫描了30 ips for 256.太多了,我无法一一尝试...... – buzhidao
@buzhidao请尝试新的nmap命令 –