Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.188.245.152
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib64/nagios/plugins/nccustom/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib64/nagios/plugins/nccustom/check_if_ips.py
#!/usr/libexec/platform-python

# version 2016/12/13
# writen by v.burov

# Requirements:
# you need to allow fillowing commands:
# "/bin/ping","ip","sed"
# Please pay attention that it's necessary to add access to sudoers file for /bin/ping if it is not SUID


import os, stat, re, sys, time, argparse
from subprocess import Popen, PIPE

ellist=''
redlist=''
PING = '/bin/ping'
SUDO = '/usr/bin/sudo'
def check_sudo_usable():
    """Checks that the SUDO program and path are correct and usable - that the program exists and is executable, otherwise exits with error."""
    if not os.path.exists(SUDO):
            end(UNKNOWN, "%s cannot be found" % SUDO)
    elif not os.path.isfile(SUDO):
            end(UNKNOWN, "%s is not a file" % SUDO)
    elif not os.access(SUDO, os.X_OK):
            end(UNKNOWN, "%s is not executable" % SUDO)

def get_server_ips():
    # Python 2 version;
    #ips = Popen("ip -4 -o a|sed  -e '/inet 127\|inet 10\\.\|inet 172\|inet 192\\.168/d' -e 's/.*inet \(.*\)\/.*/\\1/'", stdout=PIPE, shell=True).stdout.read().split('\n')
    ips = Popen("ip -4 -o a|sed  -e '/inet 127\|inet 10\\.\|inet 100\\.100\\.0\\.\|inet 172\|inet 192\\.168/d' -e 's/.*inet \(.*\)\/.*/\\1/'", stdout=PIPE, shell=True).stdout.read().decode('UTF-8').split('\n')
    return ips

def ping_to_float(s):
    try:
        return float(s)
    except ValueError:
        return 5000.1

def add_redlist(s):
    global redlist
    if redlist=='':
         redlist='CRITICAL - '+s
    else:
         redlist+=', '+s

def add_ellist(s):
    global ellist
    if ellist=='':
         ellist='Warning - '+s
    else:
         ellist+=', '+s

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-v","--verbose", default=False, action="store_true", help="Extra output")
    parser.add_argument("destination", nargs='?', default="nagios.web-hosting.com", help="Destination")
    args = parser.parse_args()


ips=[]
ips=get_server_ips()
#print(ips)
pingoutputmatch=re.compile("icmp\S+=(\d+)\s+\S+\s+time=(\S+)\s+")

destination = args.destination

if args.verbose : print("Destination = {}".format(destination))


use_sudo = False
if not os.stat(PING).st_mode & stat.S_ISUID:
    if args.verbose : print("/bin/ping is not SUID: have to use sudo")
    check_sudo_usable()
    use_sudo = True


running_procs={}
result={}
for s in ips:
    if len(s) == 0:
         continue
    if use_sudo :
        running_procs[s]=Popen([SUDO, PING,'-I', s, '-A','-n','-c','3','-W','1',destination], stdout=PIPE, stderr=PIPE)
    else:
        running_procs[s]=Popen([PING,'-I', s, '-A', '-n', '-c', '3', '-W', '1', destination], stdout=PIPE, stderr=PIPE)
    result[s] = ['-','-','-']


i1=0
while running_procs :
    i1+=1
    if i1>1000 :
        print("Script error: loop")
        sys.exit(3)
    for ip in running_procs.keys():
        proc = running_procs[ip]
        retcode = proc.poll()
        if retcode is not None: # Process finished.
            del running_procs[ip]
            break
        else: # No process is done, wait a bit and check again.
            time.sleep(.1)
            continue
    retcode = proc.poll()
    if retcode is None:
        time.sleep(.1)
        continue
    i2=0
    for output in iter(proc.stdout.readline,b'') :
        p=pingoutputmatch.search(output.decode('UTF-8'))
        if p:
            result[ip][int(p.group(1))-1] = p.group(2)
            if args.verbose : print("%{} seq={}s time={}s ms".format(ip, p.group(1), p.group(2)))


for ip in result.keys():
    if args.verbose : print("ip+{}{}{} ".format(result[ip][0],result[ip][1],result[ip][2]))
    if result[ip][0]=='-' and result[ip][1]=='-' and result[ip][2]=='-':
        add_redlist(ip)
    else:
        p1=ping_to_float(result[ip][0])
        p2=ping_to_float(result[ip][1])
        p3=ping_to_float(result[ip][2])
        if p1>400 and p2>400 and p3>400 :
            add_redlist('%s(%s;%s;%s)' % (ip,result[ip][0],result[ip][1],result[ip][2]))
        elif p1>200 and p2>200 and p3>200 :
            add_ellist('%s(%s;%s;%s)' % (ip,result[ip][0],result[ip][1],result[ip][2]))
if len(redlist)>0 :
    print("{}{}".format(redlist,ellist))
    sys.exit(2)
if len(ellist)>0 :
    print(ellist)
    sys.exit(1)
print("OK")

Youez - 2016 - github.com/yon3zu
LinuXploit