![](/img/trans.png)
[英]Multiple Instantiation of Programs interacting with one another (Python2.7 & Tkinter)
[英]python2.7 multiple definitions, only one executes
我是python和编码领域的新手,但是工作的需要使我有机会了解我是否可以找到/编写可行的想法/解决方案。 最终的最终目标是拥有一个Salt-Stack模块,但目前仅专注于直接的python代码。
需要有代码来帮助我们确定陈旧/旧的登录,然后最终通过逻辑来对这些帐户进行处理。 下面是到目前为止我可以完成的工作,第一个定义有效并提供了我期望的输出。 但是,第二个定义似乎根本没有执行,我对为什么感到茫然。 到目前为止,这是我拼凑的:
import subprocess
import re
logins = "for i in `cat /etc/passwd |awk -F : '{print $1}'`; do lastlog -u $i|grep -v Username|grep -v Never; done "
p = subprocess.Popen(logins, shell=True, bufsize=0, stdout=subprocess.PIPE, universal_newlines=True)
p.wait()
output = p.stdout.read()
p.stdout.close()
nevers = "for n in `cat /etc/passwd |awk -F : '{print $1}'`; do lastlog -u $n|grep -v Username|grep Never; done "
p = subprocess.Popen(nevers, shell=True, bufsize=0, stdout=subprocess.PIPE, universal_newlines=True)
p.wait()
never_output = p.stdout.read()
p.stdout.close()
def last_login():
pattern = re.compile(r'(\w+)(\s+\B.\bpts\/\d\s+[^A-Z]+) (\w+\s\w+\s+\d+\s+\d+:\d+:\d+)(\s+-\d+\s+)(\d+)')
for m in re.finditer(pattern, output):
print m.group(1), '\t', m.group(3), m.group(5)
#return output
def never_logged_in():
pattern = re.compile(r'(\w+)(\s+\S+\s\s+\s\w+\S+)')
for x in re.finditer(pattern, never_output):
print x.group(1)
#return never_output
def main():
never_logged_in()
last_login()
main()
这是“ def last_login()”提供的示例:
test1 Sun Mar 26 15:21:58 2017
test2 Sun Mar 26 15:22:08 2017
这是“ def never_logged_in()”应提供的示例:
test4
感谢您的任何想法/建议,因为这已经是一次盛大的学习冒险,我很高兴看到我是否真的可以完成这项工作。 不,这不是一个班级项目……那些日子已经过去了……:-)
我的代码还可以,是我的正则表达式无法正常工作。 解决方案是:
def never_logged_in():
pattern = re.compile(r'(\w+)(\s+\*\*Never logged in\*\*)')
for x in re.finditer(pattern, never_output):
print x.group(1)
现在进入下一阶段...谢谢大家!
做如下
main()
之后添加print(never_output)
main()
never_output
和pattern = re.compile(r'(\\w+)(\\s+\\S+\\s\\s+\\s\\w+\\S+)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.