def renew_voms_proxy(passwd="", vo=None, lifetime="196:00"):
    """
    Renews the voms proxy using a password *passwd*, an optional virtual organization name *vo*, and
    a default *lifetime* of 8 days. The password is written to a temporary file first and piped into
    the renewal commad to ensure it is not visible in the process list.
    """
    with tmp_file() as (_, tmp):
        with open(tmp, "w") as f:
            f.write(passwd)

        cmd = "cat '{}' | voms-proxy-init --valid '{}'".format(tmp, lifetime)
        if vo:
            cmd += " -voms '{}'".format(vo)
        code, out, _ = interruptable_popen(cmd, shell=True, executable="/bin/bash",
            stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        if code != 0:
            raise Exception("proxy renewal failed: {}".format(out))
Renews the voms proxy using a password *passwd*, an optional virtual organization name *vo*, and
    a default *lifetime* of 8 days. The password is written to a temporary file first and piped into
    the renewal commad to ensure it is not visible in the process list.