我需要通过Java执行decode -t 17。但它需要root权限。所以我想到执行su -i来切换到root,然后执行decode命令。但是什么也没发生。请帮助:
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
textArea.setText("");
repaint();
try{
p = Runtime.getRuntime().exec("sudo -i");
p.waitFor();
p.destroy();
p = Runtime.getRuntime().exec("dmidecode –t 17");
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
textArea.setText(s);
p.waitFor();
p.destroy();
p = Runtime.getRuntime().exec("su - mayooran");
p.waitFor();
p.destroy();
}
catch(Exception e)
{
}
}
});
btnNewButton.setBounds(404, 89, 119, 34);
contentPane.add(btnNewButton);
你有很多选择:
1-您可以编写脚本,将dmidecode的静态输出写入世界可读的文件,或者您可以使用其他信息源(例如/proc/meminfo)。
2-在shell上执行以下操作:
chgrp $usergroup/usr/sbin/dmidecode
chmod g + s/usr/sbin/dmidecode