好的,好的。我正在编写一个非常基本的Python脚本,它只接受来自df -h的输出并在屏幕上显示它。我要实现其他一些功能,但这部分让我感到难过。
我非常确定我的代码是正确的,我甚至在time.sleep()语句中查看输出是否输得太快。但是当我遍历stdout时,即使使用rstrip(),每次创建新行时终端输出都会奇怪地间隔,并且会破坏终端。
Anythoughts?
这是我的代码:
#!/usr/bin/python
import sys
import os
import re
import subprocess
import time
np1=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
np2=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
p1=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
p2=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
p3=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
p4=subprocess.Popen('ssh -qt <redacted>/usr/bin/sudo df -h /opt/saswork', shell=True, stdout=subprocess.PIPE)
for x in np1.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid NP01 is at ", str(y)
time.sleep(1)
for x in np2.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid NP02 is at ", str(y)
time.sleep(1)
for x in p1.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid P01 is at ", str(y)
time.sleep(1)
for x in p2.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid P02 is at ", str(y)
time.sleep(1)
for x in p3.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid P03 is at ", str(y)
time.sleep(1)
for x in p4.stdout:
x=x.rstrip()
x=re.findall('.\d%', x)
for y in x:
print "SAS Grid P04 is at ", str(y)
这是输出
SAS Grid NP01 is at 33%
SAS Grid NP02 is at 36%
SAS Grid P01 is at 3%
SAS Grid P02 is at 23%
SAS Grid P03 is at 41%
SAS Grid P04 is at 24%
[<service account>@werindgatep01 ~]$
[<service account>@werindgatep01 ~]$
此时我需要做的是CTRL-C和CTRL-D,直到它将我从服务帐户中删除并返回到我的标准用户帐户。从那里我可以sudo su - 服务帐户
我输了。 。 .quite失去了
答案 0 :(得分:0)
我认为.findall()
正则表达式中的点正在拾取制表符。尝试检查并删除...?
答案 1 :(得分:0)
-t
切换到ssh
会强制您的终端进入原始模式。原始模式会在行尾失去隐式回车符,并且会混淆文本输入。
来自the man page:&#34; [ - t]可用于在远程机器上执行任意基于屏幕的程序,这可能非常有用,例如在实施菜单服务时。&#34;
由于您没有运行可视化编辑器或其他基于屏幕的程序,我建议您丢失-t
。
答案 2 :(得分:0)
我遇到了类似的问题,但是通过在SSH命令中添加“-T”选项来修复它。
-T禁用伪tty分配。