11import subprocess
22import os
3- import psutil
3+ import sys
44import socket
55import threading as t
66import fysom as f
@@ -107,18 +107,26 @@ def check_host(self, host):
107107
108108 def announce_sensor (self , e ):
109109 l .debug ("announcing sensor to the agent" )
110- p = psutil .Process (os .getpid ())
111110 s = None
111+ pid = os .getpid ()
112112
113- d = Discovery (pid = p .pid ,
114- name = p .cmdline ()[0 ],
115- args = p .cmdline ()[1 :])
113+ if os .path .isfile ("/proc/self/cmdline" ):
114+ with open ("/proc/self/cmdline" ) as cmd :
115+ cmdinfo = cmd .read ()
116+ cmdline = cmdinfo .split ('\x00 ' )
117+ else :
118+ cmdline = [os .path .basename (sys .executable )]
119+ cmdline += sys .argv
120+
121+ d = Discovery (pid = pid ,
122+ name = cmdline [0 ],
123+ args = cmdline [1 :])
116124
117125 # If we're on a system with a procfs
118126 if os .path .exists ("/proc/" ):
119127 s = socket .socket (socket .AF_INET , socket .SOCK_STREAM )
120128 s .connect ((self .agent .host , 42699 ))
121- path = "/proc/%d/fd/%d" % (p . pid , s .fileno ())
129+ path = "/proc/%d/fd/%d" % (pid , s .fileno ())
122130 d .fd = s .fileno ()
123131 d .inode = os .readlink (path )
124132
@@ -127,7 +135,7 @@ def announce_sensor(self, e):
127135 if b :
128136 self .agent .set_from (b )
129137 self .fsm .ready ()
130- l .warn ("Host agent available. We're in business. Announced pid: %i (true pid: %i)" % (p . pid , self .agent .from_ .pid ))
138+ l .warn ("Host agent available. We're in business. Announced pid: %i (true pid: %i)" % (pid , self .agent .from_ .pid ))
131139 return True
132140 else :
133141 l .warn ("Cannot announce sensor. Scheduling retry." )
0 commit comments