2015-09-14 64 views
1

的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杀死这个循环,然后再次从这个位置开始。我怎样才能自动做到这一点?

回答

0

,答案已经在问题,即设置一个超时,如:

for i in {1..255} 
do 
    ssh -o ConnectTimeout=1 myname @192.168.1.$i 
done 

您只需要4分钟左右去了所有的数字。如果有人知道如何设定小于1的时间,它会更快。

-1

您可以使用nmap 192.168.1.0/24 -p 22 --host-timeout 5ms

这将扫描您的网络并显示所有与港口22开放的设备。你的工作站将在其中。

如果你有机会到DHCP服务器(例如,您的无线路由器),那么你可以看到哪些IP地址最近分别担任。

+1

您可以使用它,但对于什么?一些详细说明会有帮助。 :) – ojrask

+0

我已经扫描了30 ips for 256.太多了,我无法一一尝试...... – buzhidao

+0

@buzhidao请尝试新的nmap命令 –

0

你是一个正确的道路上,但它会很难让所有的优点和缺点没有。

您可以尝试登录到一个成功,然后停止:

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)

+0

无法使用。请注意,当我遇到支持ssh登录的IP地址时,我需要手动输入密码。例如 – buzhidao

+0

,使用我的代码,当达到33号时,我必须输入我的密码。但那不是我工作站的IP。所以我必须按ctrl-c来结束它。 – buzhidao

+0

您如何期待一个假设的自动化脚本来猜测它是否位于另一端的工作站?你不能要求魔法。 –