我們通常使用python arg1 arg2這種形式傳參,這種形式在傳遞非敏感性息的時候沒有問題,但是在傳遞敏感性息時就有乙個致命的問題:可以通過ps命令列印後台資訊,進而獲取敏感性息。
那,這個問題怎麼解決?
答案是通過管道符!
例如: echo 123 | python
然後在python指令碼中通過sys.stdin.read()獲取引數,這樣ps就不會列印出來敏感性息了。
python的話,還可以通過os.envirou獲取執行環境變數的方式獲取到shell中定義的引數,也可以做到在ps中不列印。
但是這個時候就有乙個特別需要注意的地方,shell中的敏感性息在使用完後一定要通過unset釋放,不然會有洩露的風險。
如果是expect指令碼的話,在expect指令碼中通過$expect_out(1,string)獲取輸入的資訊,如果是多個引數,可以通過split切割,例如:
set passwordlist exp
ecto
ut(1
,str
ing)
setl
ines
[spl
it
"expect_out(1,string) set lines [split "
expect
out
(1,s
trin
g)se
tlin
es[s
plit
"passwordlist" " "]
set root_pwd [lindex $lines 0]
set root2_pwd [lindex $lines 1]
shell指令碼中呼叫其他指令碼
目前來說有三種方法 1.指令碼絕對路徑 這個方式是最普通的,底層呼叫的是fork實現,執行的時候開乙個子shell執行呼叫的指令碼,子shell執行的時候,父shell還在 子shell執行完畢後返回父shell,子shell從父shell繼承環境變數,但是子shell中的環境變數不會帶回父shel...
呼叫其他python指令碼(指令碼目錄獲取)
目錄 1.問題描述 2.解決方法 2.1 獲取呼叫的指令碼路徑 2.2執行python指令碼 3.總結 python版本 python3.7 os平台 windows7 python 指令碼執行的時候去呼叫執行其他指令碼,使用getcwd 獲取指令碼路徑不對。指令碼timerexec.py 呼叫指令...
python呼叫shell指令碼時需要切換目錄
最近遇到了乙個問題,就是python 呼叫shell指令碼時,發現輸入輸出的檔案,總是和自己預想的有偏差,但是單獨在linux下執行命令的時候,卻沒有錯誤。後來發現是相對路徑的問題,因為執行python檔案的時候,會有乙個工作目錄,而執行shell指令碼的時候,又會有乙個工作目錄,這樣就很容易混淆。...