亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何通過java中的runtime.exec()傳遞用戶和密碼

如何通過java中的runtime.exec()傳遞用戶和密碼

RISEBY 2021-08-19 18:28:53
我正在嘗試使用 java 1.8 和 OS Solaris 11 運行一個簡單的命令。我的程序在特定用戶下運行,并且該命令必須在 SuperUser 下運行這是命令:Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");如果我運行命令,它會正常工作并要求輸入密碼,然后我輸入密碼我會得到結果。問題是我在java中運行它這是我的代碼Process proc = Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");PrintWriter out = new PrintWriter(new OutputStreamWriter(proc.getOutputStream()));out.println(password);out.flush();int exitCode= proc.waitFor();System.out.println(exitCode);//exitCode = 1BufferedReader pArgs= new BufferedReader( new InputStreamReader(proc.getInputStream()));if((line=pArgs.readLine()) != null){    //do something}else{    //something not working = ERROR }我認為該行等于 null 因為密碼集中的某些內容不正確蝙蝠我不確定我做錯了什么?
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

如何通過java中的runtime.exec()傳遞用戶和密碼

如果您想使用su.

Solarissu使用該getpass()函數從用戶那里獲取必要的密碼。

從Solarisgetpass()手冊頁:

描述

getpass()函數打開進程的控制終端,將空終止字符串寫入該設備prompt,禁用回顯,讀取字符串直到下一個換行符或 EOF,恢復終端狀態并關閉終端。

...

錯誤

如果出現以下情況,getpass()getpassphrase()函數可能會失?。?/p>

...

ENXIO

該進程沒有控制終端。

su 要么從控制終端獲取密碼,要么失敗。

這是一個深思熟慮的設計決策,幾乎不可能執行不安全的操作,例如自動輸入密碼。


查看完整回答
反對 回復 2021-08-19
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

非常感謝您的所有回答。但我的解決方案有點不同。決定使用可以從兩個進程寫入和讀取的外部文件。整個目標是再次握手,以防在根運行的進程失?。撮T狗)。

所以現在不需要使用命令

Runtime.getRuntime().exec("su - root -c 'pargs -l 1111'");

當根進程開始運行時,它會將拍號記錄到文件中。如果用戶的進程(每X次讀取文件)發現簽名發生了變化,他將再次握手。


查看完整回答
反對 回復 2021-08-19
  • 3 回答
  • 0 關注
  • 766 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號