AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 69722
In Process
Unknown
Unknown
Asked: 2009-09-30 11:40:36 +0800 CST2009-09-30 11:40:36 +0800 CST 2009-09-30 11:40:36 +0800 CST

每周 Cron / Logrotate / Denyhosts 错误

  • 772

我每周都会收到以下错误电子邮件。这似乎是 cron、logrotate 或拒绝主机的问题。我不确定是哪个。

Subject: Cron <root@vps> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

/etc/cron.daily/logrotate:
test: 91: /etc/hosts.deny: unexpected operator

有什么建议么?

ubuntu
  • 8 8 个回答
  • 1121 Views

8 个回答

  • Voted
  1. Justin
    2010-01-02T08:20:17+08:002010-01-02T08:20:17+08:00

    /etc/logrotate.d/denyhosts 很短,在我看来并没有使用测试:

    是的,但它有这个:

    postrotate
    /etc/init.d/denyhosts restart > /dev/null
    endscript
    

    那个脚本会做类似的事情

        HOSTS_DENY=$(grep ^HOSTS_DENY $CONFIG  | cut -d = -f 2)
        test -e $HOSTS_DENY || touch $HOSTS_DENY
    

    假设脚本是正确的,如果我不得不猜测我会说您的配置文件中的 HOSTS_DENY 行格式不正确。

    幸运的是,我们不必猜测,这个命令会准确地告诉你错误来自哪里:

    /bin/sh -x /etc/init.d/denyhosts restart
    
    • 1
  2. Dave Drager
    2009-09-30T11:44:54+08:002009-09-30T11:44:54+08:00

    在我看来,/etc/hosts.deny 或 /etc/cron.daily/logrotate 的第 91 行似乎有错误。

    确保 hosts.deny 中的条目格式正确。

    • 0
  3. Dennis Williamson
    2009-09-30T21:43:04+08:002009-09-30T21:43:04+08:00

    我敢打赌,某个命令中有一个sh带有双等号(“==”)的脚本,test而不是一个(“=”)。Bash 的内置test允许==或=,但 Bourne shell(至少dash在 Ubuntu 上)只允许=. 另外,我/usr/bin/test只允许单个相等。但是,请参阅此答案的底部以获取产生相同错误的其他示例。

    我会查看logrotate.conf它是否有可能存在该问题的第 91 行。

    如果由于某种原因,您想重新创建错误消息以进行测试:

    创建一个文件,我们称之为“a”,内容如下:

    echo 'In script "a"'
    f="/etc/hosts.deny"
    test $f == "foo"
    

    现在做:

    sh a
    

    你应该得到:

    In script "a"
    test: 3: /etc/hosts.deny: unexpected operator
    

    您还可以使用以下任何方法重现类似的错误:

    sh -c "test /etc/hosts.deny +"
    sh -c "test /etc/hosts.deny -"
    sh -c "test /etc/hosts.deny /"
    sh -c "test /etc/hosts.deny *"
    

    编辑:尝试以下方法来缩小搜索范围:

    $ su -
    $ find /etc -type f | xargs awk 'FNR==91 && /test/ {print FILENAME, $0}'
    

    你将suroot,然后运行find/awk命令。对于/etc. 然后您可以查找不正确的运算符。

    • 0
  4. Chad Huneycutt
    2009-10-01T17:30:32+08:002009-10-01T17:30:32+08:00

    在 /etc/logrotate.d/denyhosts 怎么样?

    • 0
  5. Mike.lifeguard
    2009-11-30T09:57:06+08:002009-11-30T09:57:06+08:00

    /etd/logrotate.d/denyhosts 很短,在我看来并没有使用测试:

    /var/log/denyhosts {
    create 0640 root root
    missingok
    weekly
    rotate 7
    compress
    postrotate
    /etc/init.d/denyhosts restart > /dev/null
    endscript
    }

    /etc 中文件第 91 行的“test”唯一实例位于不相关的文件中。

    /usr/sbin/logrotate(二进制文件)的 cron.daily/logrotate 作业点——如果存在错误,我在哪里可以检查源代码?

    • 0
  6. Weston
    2009-12-11T11:57:14+08:002009-12-11T11:57:14+08:00

    只是为了理智,你可能想使用:

    foo:~# which test
    /usr/bin/test
    

    看看测试程序是你认为的那样。一种防御性编程方法是在 cron 作业中使用命令的完整路径。这可以确保调用正确的二进制文件,并防止攻击者在您的 PATH 中替换另一个类似名称的命令。

    • 0
  7. Schof
    2010-01-13T18:10:33+08:002010-01-13T18:10:33+08:00

    以下是一些故障排除提示。我认为贾斯汀绝对是在正确的轨道上。问题可能出在您的拒绝主机设置中。但是让我们追踪它。

    您最初从 logrotate 得到错误。所以运行 logrotate:

    logrotate /etc/logrotate.conf
    

    假设你得到一个错误,至少你有一个可重现的案例。现在让我们看看问题出在 logrotate 还是denyhosts 上。让我们使用我们在 logrotate 中看到的 denyhosts 命令:

    /etc/init.d/denyhosts restart > /dev/null
    

    如果这给你一个错误,你真的很接近追踪这个了。尝试从行尾删除 "> /dev/null" 以获取更多信息。在此处发布输出以寻求帮助。

    但是,如果上述两个技巧都没有让您出错,但您仍然从 cron 作业中收到错误,那么您就有问题了。在尝试调试某些东西之间等待一周很糟糕。

    在 /etc/crontab 中添加另一行。复制 cron.weekly 行,并将其粘贴到所有其他行的下方。然后对其进行编辑,使所有“何时”条目都是星号。

    47  6   *   *   7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    

    将其更改为:

    *   *   *   *   *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    

    然后它将一分钟运行一次,一整天,一整周。这显然不是您想留在那里的东西,但它有助于故障排除。

    如果您在 cron 作业中看到从命令行运行脚本时看不到的错误,则几乎总是您的环境有所不同。首先检查路径。

    • 0
  8. mlambie
    2012-03-06T17:57:18+08:002012-03-06T17:57:18+08:00

    卸载拒绝主机包后我遇到了同样的问题。确认您确实安装了该软件包:

    mlambie@prime:~$ dpkg -l | grep denyhosts
    rc  denyhosts                              2.6-6.1ubuntu1                    a utility to help sys admins thwart SSH crac
    

    如果安装了软件包,您将有“ii”作为前两个字符。例如,我安装了 openssh-server 并得到以下结果:

    mlambie@prime:~$ dpkg -l | grep openssh-server
    ii  openssh-server                         1:5.3p1-3ubuntu7                  secure shell (SSH) server, for secure access
    

    就我而言,我认为在删除包时没有成功删除 logrotate 配置,所以我手动 rm'd 它。

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve