sudo登录后运行命令
我正在尝试执行下面的代码来执行sudo
命令,但我不知道在sudo
登录后如何执行命令
String[] commands = {"sudo su - myname;","id"}; JSch jsch = new JSch(); String username = "myuser"; com.jcraft.jsch.Session session = jsch.getSession(username,"hostname", 22); session.setPassword("my@123"); session.connect(); Channel channel=session.openChannel("exec"); for(int a=0;a0){ int i=in.read(tmp, 0, 1024); if(i<0)break; System.out.print(new String(tmp, 0, i)); } if(channel.isClosed()){ System.out.println("exit-status: "+channel.getExitStatus()); break; } } }
sudo su
执行一个新的shell。
要向shell提供命令,您可以:
-
在
su
命令行上指定命令,就像官方JSchSudo.java
示例所示:((ChannelExec)channel).setCommand("sudo -S -p '' "+command);
-
或使用其标准输入将命令提供给shell,即与提供密码的方式相同:
out.write(("command\n").getBytes());
另请参阅sudo登录后使用Java JSch程序执行多个bash命令 。
通常,我建议使用第一种方法,因为它使用更好的API(命令行参数)。