簡體   English   中英

Klist python 子進程返回

[英]Klist python subprocess return

我需要一些幫助來了解 windows cmd/ps 行為以及如何在 python 上處理它。

如果我在命令提示符 (CMD) 上運行“klist”或在任何文件夾上運行 PowerShell (PS),我會收到以下響應:

C:\>klist
A Identificação de Logon atual é 0:0x249a0c1
Tíquetes em Cache: (0)

如果我在 MIT 文件夾 (C:\Program Files\MIT\Kerberos\bin) 下運行 klist,我有這個響應(我在任何情況下都期望得到的響應)

C:\Program Files\MIT\Kerberos\bin>klist
Ticket cache: FILE:C:\Users\XXX\XXXXX\krb5\KRB5CCNAME
Default principal: XXXXX@XXXX.COM.BR

Valid starting     Expires            Service principal
08/02/22 22:38:34  08/03/22 19:53:30  krbtgt/XXX.COM.BR@XXX.COM.BR
        renew until 08/03/22 22:38:34

如果我在 MIT 文件夾的 PS 中運行 klist,我會得到完全不同的響應:

PS C:\Program Files\MIT\Kerberos\bin> klist
A Identificação de Logon atual é 0:0x249a112
Tíquetes em Cache: (0)

首先:為什么 CMD 和 PS 在運行 MIT 文件夾中的 klist 可執行文件時表現不同?

第二:如何將我的 windows “默認” klist 設置為 MIT klist(而不是我什至不知道的其他 klist)?

我有一個 Python 腳本,它運行在“klist”上運行的 python 子進程以獲取活動(或非活動)票的狀態。 由於上面顯示的問題,當它“運行”klist 時,他們得到了錯誤的答案。

# checa se há tickets e se estão expirados
klist = sp.run(["klist", "-s"], timeout=5, encoding="iso8859-1")
if klist.returncode == 1:
    return False

# checa se os tickets existentes pertencem ao usuário e ao cluster correto
klist = sp.run(
    ["klist"], stdout=sp.PIPE, stderr=sp.PIPE, encoding="iso8859-1", timeout=5
)
if klist.returncode == 1:
    return False

在第三:如何設置上面的 python 腳本以運行“正確”klist(假設我無法更改 windows 默認行為)?

首先:為什么 CMD 和 PS 在運行 MIT 文件夾中的 klist 可執行文件時表現不同?

CMD,傳統上用於 Windows(和 MS-DOS),首先在當前目錄中查找klist.exe - 因此它在該目錄中運行C:\Program Files\MIT\Kerberos\bin\klist.exe

PowerShell 不這樣做——它只$env:PATH中查找,除非它明確給出了運行的完整路徑。 與您在 Unix shell(例如 Bash)中所做的類似,只有.\klist會在當前目錄中運行 klist.exe,而僅針對 PATH 中的位置檢查裸klist (忽略當前目錄)。

第二:如何將我的 windows “默認” klist 設置為 MIT klist(而不是我什至不知道的其他 klist)?

編輯 Windows %PATH%環境變量,將 MIT Kerberos 'bin' 目錄放在開頭。

第三:如何設置上面的 python 腳本以運行“正確”klist(假設我無法更改 windows 默認行為)?

指定 .exe 文件的完整路徑:

sp.run([r"C:/Program Files/MIT/Kerberos/bin/klist", "-s"], ...)

或僅為該進程更新 PATH :

os.environ["PATH"] = r"C:\Program Files\MIT\Kerberos\bin;" + os.environ["PATH"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM