我有一个脚本,它创建一个虚拟机并给我一个 IP 地址。然后我想做这样的事情:
waitforssh 192.168.2.38 && ssh 192.168.2.38
Run Code Online (Sandbox Code Playgroud)
它将等待机器启动并且 ssh 响应,然后 ssh 进入它。
waitforssh是我需要找到的命令。
nmap、netcat、fping 或 ping 可以完成这项工作吗?我尝试过 netcat,但如果主机无法访问,它会在几秒钟内放弃。
它需要处理机器本身正在启动并且可能需要一些时间来响应网络数据包的事实。
可能的重复:
如何在批处理文件中休眠?
我有一个批处理文件,它作为 Windows Server 2003 中的计划任务运行。
这个批处理文件一个接一个地调用了大约 20 个其他的批处理文件。
当它运行时,它会在服务器上造成相当大的峰值并降低性能。
我希望能够在我的每个批处理文件调用之间添加 WAIT 或 SLEEP 类型的命令,以便稍微分散负载。
任何人都可以阐明这样做的最简单方法吗?
我最近制作了一个用于备份的批处理脚本。在脚本中间的某个地方,我必须等待一段时间才能到达,然后继续脚本的下一行。我已将脚本安排在下午 4:00,在 wait 命令之后,下一行应该在下午 5:30 正好开始。我想过使用SLEEP命令,但不确定 wait 命令之前使用的命令是否会在某个时间结束(由于文件大小不一致),但可以肯定它们将在 5:00 或 5:10 之前完成,接下来应该执行等待特定系统时钟的命令。我正在检查是否有任何命令会等待或休眠,直到指定的时间达到系统时间并在之后恢复。有人遇到过这种情况吗,是怎么解决的?
我在 KVM 下运行两台来宾机器。主机运行的是 Arch Linux(内核版本 2.6.38.2),来宾都是 CentOS 5.5(内核版本 2.6.18)。我将网络设置为桥梁,或多或少如下(当然,我不是手工完成的——它分散在系统启动脚本中)
# /usr/sbin/brctl addbr br0
# /usr/sbin/brctl addif br0 eth0
# /sbin/ifconfig br0 192.168.3.30 netmask 255.255.255.0 broadcast 192.168.3.255 up
# qemu-kvm -hda <disk-image1> -m 2048 -vga std -vnc :3 -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup
# qemu-kvm -hda <disk-image2> -m 2048 -vga std -vnc :4 -net nic,vlan=0 -net tap,vlan=0,ifname=tap1,script=/etc/qemu-ifup
# cat /etc/qemu-ifup
#!/bin/sh
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
sudo /usr/sbin/brctl addif br0 $1
Run Code Online (Sandbox Code Playgroud)
该配置主要工作。奇怪的是我经常出现网络“暂停”。我与虚拟机的大部分交互都是通过 ssh 或 Web 浏览器进行的。通常,特别是在空闲时间之后,我会在会话中输入一些内容或访问网页,但什么也不会发生。最终,10-15 秒后,正常活动将恢复正常。从死时间开始的 ssh 击键会匆匆忙忙地完成。Web 请求似乎丢失了,但是快速的“重新加载页面”立即得到了结果。整个虚拟机一直在运行,正如我通过观察控制台的 VNC …
我知道您可以使用 Control+C 强制退出它,但是假设我正在屏幕上运行一个程序,例如 Minecraft 服务器……我如何在不关闭屏幕/服务器的情况下在 SSH 中离开屏幕?
有捷径吗?
我怀疑我可以输入任何命令,因为 Minecraft 程序是一个控制台。
pause ×5
linux ×3
ssh ×2
batch-file ×1
bridge ×1
networking ×1
ping ×1
socket ×1
windows ×1
windows-xp ×1