我有一个 Java 代码,它在执行时会向用户显示一个 GUI 按钮,然后按下它;将执行一个 bash 脚本。我的脚本可以在终端上运行,但是当我尝试通过 Runtime.getRuntime().exec 在 Java 中运行脚本时,我收到了权限错误。我还在命令中使用了 chmod 777,但都是徒劳的。
**MY Java code is**
package com.interface_saad;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import java.io.File;
/**
*
* @author Saad
*/
public class Main {
/**
* @param args the command line arguments
*/
static JFrame fr=new JFrame("QoS");
static JPanel button_pan=new JPanel();
static JButton QoSButton=new JButton("QoS");
public static void main(String[] args) throws IOException {
final File file = null;
button_pan.add(QoSButton);
fr.add(button_pan,BorderLayout.CENTER);
fr.setVisible(true);
fr.setSize(200,200);
QoSButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
System.out.println("path");
Runtime.getRuntime().exec("chmod 777 /home/talal/enable.sh");
Runtime.getRuntime().exec("./ /home/talal/enable.sh");
} catch (Exception ex) {
System.out.println(ex);
}
}
});
fr.setDefaultCloseOperation(fr.EXIT_ON_CLOSE);
}
}
我的 bash 脚本是 enable.sh
#!/bin/sh
(sleep 2
echo root
sleep 2
echo admin
sleep 1
echo '/usr/sbin/svqos status `get_wanface` 0'
sleep 2
echo '/usr/sbin/svqos `nvram get wshaper_downlink` `nvram get wshaper_uplink` `get_wanface` `nvram get wan_mtu` 0 '
sleep 1
echo '/usr/sbin/svqos status `get_wanface` 0'
sleep 4) | telnet 192.168.1.1 -l root
需要建议。我迫切需要帮助。