1
VgV OP 别说解析问题哦,我在测试机子的时候,用计划定时执行的,已经测试了几天了 SSH 一直没启动。
我也以为是解析问题,之后我用 VNC 登录后 ping 了一下再执行就成功了,我一脸懵 b... |
2
Lpl 2017-09-17 17:05:31 +08:00 via iPhone
有调试么?比如在你不行的时候,status_code 是多少?
|
4
keysona 2017-09-17 17:18:47 +08:00
|
6
azh7138m 2017-09-17 17:34:01 +08:00
1 stdout
2 stderr 大概是这么个意思 |
7
VgV OP 现在不能重现之前的情况了,因为 ping 了,所以现在执行都是成功的。
没 PING 之前我执行 sh 123.sh 没什么提示,PING 了之后,我再执行就有启动 SSH 提示了。 |
9
azh7138m 2017-09-17 17:49:58 +08:00
把 2 重定向到 1,大概这么个意思
|
11
Beebird 2017-09-17 18:39:50 +08:00
我猜是 ping 每次都 lookup dns server, curl 则默认读你本地的 dns cache
起初你系统里的 dns cache baidu 的 ip 失效了,所以无法返回 200,而当你 ping 了一次之后,dns cache 的 baidu entry 就被 renew 了。 以上是猜测,不对请指正。。。 |
12
just1 2017-09-17 19:03:55 +08:00 via Android
ping 完才成功就是解析问题
|
14
aver4vex 2017-09-17 20:02:52 +08:00
如果想偷懒就在调用之前执行一下 ping 咯
|
15
VgV OP @aver4vex 哈哈哈,好吧,刚才想安装 nscd 服务,后来想想 ping 也可以,节省资源。
我先在脚本前面加个 PING 试试 |
16
VgV OP |
17
aver4vex 2017-09-17 20:31:26 +08:00
#!/bin/bash
CheckURL="http://www.baidu.com/" #自定义远程地址,访问状态为 200 时执行启动 ssh 命令。 ping -c 4 $CheckURL STATUS_CODE=`curl -o /dev/null -m 5 --connect-timeout 5 -s -w %{http_code} $CheckURL` if [ "$STATUS_CODE" = "200" ]; then service sshd start fi |
18
VgV OP /etc/init.d/sshd start
centos6+原来要这样 |
20
Beebird 2017-09-17 20:52:05 +08:00
你用 cron 跑,service 路径不在 PATH 里
在 /etc/crontab 里修改(假定你的发行版 service 在 /usr/sbin/下): SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/service |
21
VgV OP @Beebird 谢谢,涨知识了。
我现在用 /etc/init.d/sshd start 这条命令能启动。6 以下应该都适用。 |
22
Tink 2017-09-17 22:20:23 +08:00 via iPhone
。。。
|
23
Lpl 2017-09-17 22:41:42 +08:00 via iPhone
玩 cron 的时候有一些地方要注意
比如所有路径都得是绝对路径,包括脚本里边的文件输出 |