Ad Widget

Collapse

External Check - Python Script Access Denied

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • JKS
    Junior Member
    • Feb 2019
    • 4

    #1

    External Check - Python Script Access Denied

    I have a python script which is called by an external check.

    Script connects to devices via SSH to run commands, it works perfectly when I 'su - zabbix' and invoke the script manually.
    Does not work when I run the script via 'Check now' button in Zabbix.

    # ls -l | grep zabbix
    -rw-r--r-- 1 zabbix zabbix 62 Feb 21 12:07 aadebug
    -rw-r--r-- 1 zabbix zabbix 1675 Jun 21 2018 id_rsa
    -rw-r--r-- 1 zabbix zabbix 241 Feb 21 10:36 mikrotik-base
    -rwxr-xr-x 1 zabbix zabbix 1355 Feb 21 12:04 mikrotik_ssh.py

    Zabbix user seem to be able to access Python outside of Zabbix.

    Error message from Zabbix:
    Traceback (most recent call last): File "/usr/lib/zabbix/externalscripts/mikrotik_ssh.py", line 19, in <module> sftp = ssh.open_sftp() File "/usr/local/lib/python3.5/dist-packages/paramiko/client.py", line 541, in open_sftp return self._transport.open_sftp_client() File "/usr/local/lib/python3.5/dist-packages/paramiko/transport.py", line 1024, in open_sftp_client return SFTPClient.from_transport(self) File "/usr/local/lib/python3.5/dist-packages/paramiko/sftp_client.py", line 169, in from_transport chan.invoke_subsystem("sftp") File "/usr/local/lib/python3.5/dist-packages/paramiko/channel.py", line 72, in _check return func(self, *args, **kwds) File "/usr/local/lib/python3.5/dist-packages/paramiko/channel.py", line 283, in invoke_subsystem self._wait_for_event() File "/usr/local/lib/python3.5/dist-packages/paramiko/channel.py", line 1208, in _wait_for_event raise e paramiko.ssh_exception.SSHException: Channel closed. Actual Python script: #!/usr/bin/python3.5 import os import paramiko import sys import time file = open("/usr/lib/zabbix/externalscripts/aadebug", "w") file.write(sys.argv[0] + "\n") file.write(sys.argv[1] + "\n") ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPo licy()) ssh.connect(sys.argv[1], username="zabbix", key_filename="/usr/lib/zabbix/externalscripts/id_rsa") sftp = ssh.open_sftp() sftp.put("/usr/lib/zabbix/externalscripts/mikrotik-base", "/mikrotik-base") time.sleep(1) stdin, stdout, stderr = ssh.exec_command("/import mikrotik-base") stdout.read() time.sleep(1) sftp.remove("/mikrotik-base") sftp.close() ssh.close() file.close() Any idea's? Thanks.
Working...