V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LCD
V2EX  ›  Linux

请教一下 zabbix 远程执行 windows 脚本的问题

  •  
  •   LCD · 2020-02-02 21:01:45 +08:00 via Android · 5141 次点击
    这是一个创建于 1754 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一切都正常,除了利用脚本调用其他程序的时候就会报错“time out while executeing a shell script”,gg 一天仍未解决,路过的大侠能否指教一下,谢谢!
    第 1 条附言  ·  2020-02-03 07:13:36 +08:00
    serber 版本是 4.0lts,agent 是 4.0.17 。
    第 2 条附言  ·  2020-02-03 07:15:18 +08:00
    server 版本是 4.0lts,agent 是 4.0.17 。
    14 条回复    2020-02-08 11:23:24 +08:00
    CallMeReznov
        1
    CallMeReznov  
       2020-02-02 21:31:22 +08:00   ❤️ 1
    你是说你本身用 zabbix 开 remotecommand 执行命令都正常,比如 helloworld >text.txt 这类命令都能执行成功
    只是在执行或调用非系统的命令的软件时报错"time out while executeing a shell script"吗?

    还是 parameter 自定义的监控项目取不到值啊?????

    第一个你试试全路径
    第二个的话你先手动执行自定义项目是否有返回值,还有是否时间比较久,有超时的问题,如果超时的话就把 C/S 的超时时间相应调长
    LCD
        2
    LCD  
    OP
       2020-02-02 22:39:45 +08:00 via Android
    1,是的,普通操作如重定向输出文本是正常的。2,我试过全路径,结果一样。3,尝试过把服务端和客户端的 timeout 都设置为 30 秒,无效。4,我是使用 adminstrator-script,然后在对应的 host 直接执行脚本。
    @CallMeReznov
    LCD
        3
    LCD  
    OP
       2020-02-02 22:41:13 +08:00 via Android
    @CallMeReznov 客户端是 xp,脚本是 batch
    nirvam
        4
    nirvam  
       2020-02-02 23:19:18 +08:00   ❤️ 1
    几个问题:1.所以你的脚本确实 30 秒内能执行完么? 2.你的 item key 是什么?

    Zabbix 为了防止 agent 阻塞,是有强制的 timeout 限制的,最高 30 秒
    ps1aniuge
        5
    ps1aniuge  
       2020-02-03 01:49:19 +08:00
    https://gitee.com/chuanjiao10/kasini3000
    欢迎试试卡死你 3000,

    1 在被控机 winxp 上安装。net3.5 sp1
    2 在 winxp 上安装 powershell2.0
    3 enable-psremoting。
    4 在主控机上测试被控机的 5985 端口是否通了。
    5 在主控机的 nodelist.csv 上写好被控机 ip,端口,账户,密码等。
    6 脚本默认超时时间 1 小时。通过主控机上的 powershell 中调用,在被控机上,支持 powershell 脚本,bat 脚本,vbs 脚本等所有脚本。
    在主控机控制,winxp 被控机,和控制 win7,win10 没啥区别。只不过需要安装和开启服务。
    当然最简单的是 win2012r2,win2016,的被控机,啥也不用安装,啥也不用设定。
    LCD
        6
    LCD  
    OP
       2020-02-03 07:10:38 +08:00 via Android
    @nirvam 1,没有 itemkey
    2,就简单执行 start "" "c:\windows\system32\cmd.exe"
    nirvam
        7
    nirvam  
       2020-02-03 14:22:46 +08:00   ❤️ 1
    @LCD #6 额……你把监控 item 设置界面要不截个图?没有 key 这个不能理解啊……
    LCD
        8
    LCD  
    OP
       2020-02-03 22:17:40 +08:00 via Android
    @nirvam 可能我的表达有问题。譬如说我想用 aget 远程执行脚本打开一个 cmd.exe 或者一个浏览器之类的程序。
    LCD
        9
    LCD  
    OP
       2020-02-03 22:19:41 +08:00 via Android
    @nirvam administrator-script 添加脚本,然后再 map 对应的 host 执行脚本,就这样子
    nirvam
        10
    nirvam  
       2020-02-04 16:04:14 +08:00   ❤️ 1
    @LCD #9 还是不太理解……如果是说要通过执行命令来获取 value 的话,一般会用到 system.run 这个 item key。这个 key 需要开启 agent 配置文件里的一个参数才能执行
    LCD
        11
    LCD  
    OP
       2020-02-04 19:29:24 +08:00 via Android
    @nirvam 可以执行简单脚本 echo "test">test,不可以执行 c:\windows\system32\cmd.exe 。好奇怪啊,难道只有我遇到这个问题?
    nirvam
        12
    nirvam  
       2020-02-05 10:06:26 +08:00   ❤️ 1
    @LCD #11 只是跑 cmd.exe ,没有任何参数?那应该是不行。这个功能是为了获取有返回值的命令的返回值的,根据你启动 zabbix agent 的用户,一般会执行到后台,等待命令返回结果作为 value 传回 zabbix server。如果一直不返回,多半会被 kill。

    远程触发 GUI 程序还是用其他方法吧。
    LCD
        13
    LCD  
    OP
       2020-02-05 10:59:43 +08:00 via Android
    @nirvam 谢谢您的解答。我可能超出 zabbix 使用范围了。查了一下,能否推荐 ansible 和 saltstack 哪个对 windows 友好适合做这个?
    nirvam
        14
    nirvam  
       2020-02-08 11:23:24 +08:00   ❤️ 1
    @LCD #13 这俩都是做自动运维的,适合跑命令行。

    我觉得你的问题可能是出在:
    `start "" "c:\windows\system32\cmd.exe"`

    如果是要做测试的话,直接把你要跑的 bat 脚本路径放进去 run。不带任何参数去调用 cmd,只是开一个空白 cmd 窗口出来而已,对 ansible 也好、zabbix 也好,都没有意义的,还会导致超时
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3577 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.