Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java bash:command substitution:unexpected token`';_Java_Linux_Bash_Jsch - Fatal编程技术网

Java bash:command substitution:unexpected token`';

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

我正在使用一个简单的命令,通过使用JavaJSCH代码为远程linux机器中的用户更改密码。 我的命令是

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