我在Solaris 10上编程时遇到问题,希望在这里寻求帮助。我创建了一个脚本来调用“ssh”二进制文件。在将“ssh”二进制文件作为子进程运行之前,此脚本会运行一些检查。该脚本通过SUID方法假定“root”的强大功能。
使用此脚本一段时间后,有些进程会像下面一样悬空。
root 23322 1 0 12:24:38? 0:00 scriptssh device321
我已登录 device321 ,发现设备中没有其他用户。
经过一些阅读后,我意识到脚本已从控制终端断开连接(查看“tty”和“PPID”处的1)。如果我使用“沟通”方法,这是Python中子流程的谬误吗?
任何人都有办法解决这个问题或找出导致这种情况发生的原因吗?
该脚本是用Python编写的。
编辑:
也许更容易突出这样的问题:
用户A登录远程服务器 - > SSH会话已创建
用户A退出远程服务器 - > SSH会话仍然是
SSH会话在当前服务器上占用高CPU。
以下是代码的一些片段。
def main():
....
....
try:
if logic_user(username) == "privilege":
if ip_check(src_ip,p_list):
ssh_out(ssh_exe)
else:
print("You do not have access to SSH")
except KeyboardInterrupt:
print("Ctrl+c keyed in")
finally:
print("\nexiting ssh")
def ssh_out(ssh_exe):
cmd = subprocess.Popen(ssh_exe, shell=True)
cmd.communicate()