小编EEP*_*EEP的帖子

以与Python不同的用户身份运行进程

我正在运行一个userA与root访问一样的脚本,从这个脚本我想popen()打电话并运行一个不同的进程userB.

os.setuid()似乎不适用于此(除非我这样做错了吗?),我想避免基于linux的解决方案,如 su -userB -c <command>

userB在脚本运行时是否有运行进程的pythonic方法userA

python linux popen

11
推荐指数
1
解决办法
3万
查看次数

双重逃脱角色

我目前正在尝试执行以下操作:

cmd = r'sudo sed -irn "1!N; s/<ip>127.0.0.1<\/ip>(\n.*4000.*)/<ip>0.0.0.0<\/ip>\1/" /usr/something.conf'
subprocess.Popen(cmd)
Run Code Online (Sandbox Code Playgroud)

然而,Popen抱怨说\\ 1是无效的引用.在pdb中检查它我看到了,

'sudo sed -irn "1!N; s/<ip>127.0.0.1<\\/ip>(\\n.*4000.*)/<ip>0.0.0.0<\\/ip>\\1/" /usr/something.conf'
Run Code Online (Sandbox Code Playgroud)

好像python正在添加一个额外的\.有没有办法防止这种情况,以便我可以像使用Popen一样运行命令?

此外,为简化起见,我将其排除在示例之外,但实际上这是在传递给Popen之前将其包装在SSH调用中,所以是的......它确实需要用Popen和完成sed.

这里参考的是字符串经过的完整步骤链...

def _formatCmd(cmdString, host=None, user=None, keyfile=None):
    cmd = []
    if host:
        cmd.append('ssh')
        keyfile = keyfile or getKeyFile()
        if keyfile:
            cmd.append('-i')
            cmd.append(keyfile)
        cmd.append("%s@%s" % (user, host))
        cmd.append(cmdString)
    else:
        cmd += cmdString.split()

    return cmd


def runCmd(host, user, cmd, timeout=None, cleanup=False):
    try:
        cmd = _formatCmd(cmd, host=host, user=user)
    except:
        pass

    #create cmd and add it to list of …
Run Code Online (Sandbox Code Playgroud)

python regex escaping python-2.7

6
推荐指数
1
解决办法
230
查看次数

在未指定的任何字符周围拆分字符串

我希望能够将一个字符串拆分成一个不是数字或点的任何东西的列表.目前split方法只提供了一种做出积极匹配的方法,是一种正则表达式在这种情况下采取的最佳途径吗?

例如,给定字符串"10.23, 10.13.21; 10.1 10.5 and 10.23.32" This应该返回列表['10.23', '10.13.21', '10.1', '10.5', '10.23.32']

因此我相信在这种情况下使用的最佳正则表达式将是... [\d\.]+

这是处理这种情况的最佳方法吗?

python regex string

4
推荐指数
1
解决办法
111
查看次数

用字符串中的'=='替换'='

我有一个字符串'x = 1',我希望能够替换单个'='字符的所有出现'=='.但是,如果给出字符串,'x == 1'我想保持原样.字符串也不能完美地格式化,'x =1' '1=x' and 'x= 1'都是有效的输入.

我无法使用,string.replace('=', '==')因为它会将'x == 1'字符串转换为'x ==== 1'

我尝试使用正则表达式并向前看,re.sub(r'=(?!=)', '==', string)但是对于'x == 1'它产生的字符串'x === 1',因为前瞻不会消耗第二个=所以正则表达式在忽略第一个=之后继续查找并替换它.

有谁知道解决这个问题的好方法?

python regex string

0
推荐指数
1
解决办法
173
查看次数

标签 统计

python ×4

regex ×3

string ×2

escaping ×1

linux ×1

popen ×1

python-2.7 ×1