我正在使用一个简单的命令通过使用Java Jsch代码来更改远程linux计算机中用户的密码。 我的命令是
command = "echo -ne "+userPassword+" \n echo "+userPassword+" \n | smbpasswd -a -s "+userId;
((ChannelExec)channel).setPty(true);
((ChannelExec)channel).setCommand("sudo -S -p '' "+command);
但是它返回错误信息,
bash: command substitution: line 2: syntax error near unexpected token `|' bash: command substitution: line 2: ` | smbpasswd -a -s TestUserNew' sudo: JX7MuQoTJX7MuQoT: command not found
我在这里感到困惑,因为此命令在Linux中运行。有人可以帮我解决这个问题吗?
谢谢, 古拉卜
答案 0 :(得分:0)
此命令在命令行上有效:
(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester
请注意,sudo
用于smbpasswd
命令。此外,第一部分的括号创建了一个子壳,这似乎很重要。
答案 1 :(得分:0)
我已经解决了问题。
原始代码是
command = "echo -ne \""+userPassword+"\n"+userPassword+"\n | sudo smbpasswd -a -s "+userId;
更新后的代码是
command = "echo -ne \""+userPassword+"\n"+userPassword+"\n\" | sudo smbpasswd -a -s "+userId;
谢谢大家,我有很多线索可以解决这个问题。