Я использую простую команду для изменения пароля для пользователя в удаленной машине Linux с помощью кода Java Jsch. Моя команда:
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. Может кто-нибудь, пожалуйста, помогите мне исправить это?
Спасибо, Гураб
Эта команда работает в командной строке:
(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester
Обратите внимание, что sudo используется для команды smbpasswd. Кроме того, скобки вокруг первой части создают подоболочку, которая кажется важной.