Java bash:command substitution:unexpected token`';
我正在使用一个简单的命令,通过使用JavaJSCH代码为远程linux机器中的用户更改密码。 我的命令是Java bash:command substitution:unexpected token`';,java,linux,bash,jsch,Java,Linux,Bash,Jsch,我正在使用一个简单的命令,通过使用JavaJSCH代码为远程linux机器中的用户更改密码。 我的命令是 command = "echo -ne "+userPassword+" \n echo "+userPassword+" \n | smbpasswd -a -s "+userId; ((ChannelExec)channel).setPty(true); ((ChannelExec)channel).setCommand(&qu
command = "echo -ne "+userPassword+" \n echo "+userPassword+" \n | smbpasswd -a -s "+userId;
((ChannelExec)channel).setPty(true);
((ChannelExec)channel).setCommand("sudo -S -p '' "+command);
但它是在说
我在这里感到困惑,因为这个命令在Linux中运行。有人能帮我修一下吗
谢谢,
Gourab此命令在命令行上工作:
(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester
请注意,
sudo
用于smbpasswd
命令。此外,第一部分周围的括号创建了一个子shell,这似乎很重要。我已经解决了这个问题
原始代码是
command=“echo-ne\”“+userPassword+”\n“+userPassword+”\n | sudo smbpasswd-a-s”+userId;
更新后的代码是
command=“echo-ne\”+userPassword+“\n”+userPassword+“\n\”| sudo smbpasswd-a-s”+userId;
谢谢大家,我有很多线索来解决这个问题。我要做的第一件事是System.out.println(命令);在您尝试执行commandcommand之前:sudo-S-p''echo-ne jDCMBv6W jDCMBv6W | smbpasswd-a-S testusernew我得到了上面的输出@DaveHRemove the'\n'before
| smbpasswd
,如果您将该输出粘贴到linux shell中,它能工作吗?嗨,我这里没有旧密码,所以我稍微修改了代码,Stringcommand=“(echo\”“+userPassword+”\“echo\”“+userPassword+“\””);smbpasswd“+userId;下面显示错误bash:-c:line 0:意外标记附近的语法错误('bash:-c:line 0:
sudo-S-p”“(echo“wxfLW2qJ”;echo“wxfLW2qJ”)| smbpasswd TestUserNew'@nan我也在这里创建smbpassword。我相应地更改了代码,命令:sudo-S-p'(echo“CQGqlv7B”;echo“CQGqlv7B”)| sudo smbpasswd TestUserNew但收到以下错误,bash:-c:0行:意外标记附近的语法错误('bash:-c:0行:
sudo-S-p'(echo“cqqgqlv7b”;echo)CQGqlv7B“| sudo smbpasswd TestUserNew'@Gourab Banerjee:删除第一个sudo。
(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester