HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux WebLive 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/local/qcloud/monitor/barad/plugin/collector/utils/proxy_client.py
#!/usr/bin/env python
import sys, os
import socket
import time

def usage():
    print("usage: proxy_client.py")
    print("                       -h (print this help)")
    print("                       attach spdk-target-iqn disk-id")
    print("                       detach spdk-target-iqn [-f]")
    print("                       rescan spdk-target-iqn")
    print("")

def main(argv):
    # 0. argvs and help
    op = argv[0]
    if op == '-h' or op not in ['attach', 'detach', 'rescan']:
        usage()
        return 1

    if len(argv) < 2: # detach without force; rescan
        usage()
        return 1

    # 1. make request msg
    if op == 'attach':
        if len(argv) < 3:
            usage()
            return 1

        request = 'attach ' + argv[1] + ' ' + argv[2]

    elif op == 'detach':
        # check force option
        if len(argv) > 2 and argv[2] in ['-f', '--force']:
            request = 'detach ' + argv[1] + ' --force'
        else:
            request = 'detach ' + argv[1] + ' --noforce'

    elif op == 'rescan':
        request = 'rescan ' + argv[1] + ' --nooption'

    else:
        usage()
        return 1

    sys.stdout.write('request: %s\n' %(request) )
    sys.stdout.flush()

    # 2. prepare socket client
    sock = socket.socket()
    #sock.settimeout(6)
    conn = False
    # try to reconnect when error occured
    for _ in range(0,20):
        try:
            sock.connect(("169.254.68.1", 9966))
        except socket.error as e:
            time.sleep(1)
            continue
        conn = True
        break
    
    if not conn:
        sys.stdout.write('Error: connect failed\n')
        exit(1)

    # 3. send request
    sock.send(request.encode('utf-8'))

    # 4. wait response
    resp = sock.recv(256)

    # 5. stdout
    sys.stdout.write('get response: %s\n' %(resp.decode()) )
    sys.stdout.flush()

    # 6. exit
    sock.close()


if __name__ == "__main__":
    if len(sys.argv) < 2:
        usage()
    else:
        main(sys.argv[1:])