bash: подстановка команды: синтаксическая ошибка около неожиданного токена `| '

Я использую простую команду для изменения пароля для пользователя в удаленной машине 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. Может кто-нибудь, пожалуйста, помогите мне исправить это?

Спасибо, Гураб

0
задан 13 August 2018 в 15:44

1 ответ

Эта команда работает в командной строке:

(echo "wxfLW2qJ"; echo "wxfLW2qJ") | sudo smbpasswd tester

Обратите внимание, что sudo используется для команды smbpasswd. Кроме того, скобки вокруг первой части создают подоболочку, которая кажется важной.

0
ответ дан 15 August 2018 в 17:00
  • 1
    Привет, у меня нет старого пароля, поэтому я немного изменил код, String command = & quot; (echo \ & quot; & quot; + userPassword + & quot; & quot; & quot; & quot; & quot; + UserPassword + & quot; \ & quot;) | smbpasswd " + userId; И он показывает ниже error, bash: -c: строка 0: синтаксическая ошибка около неожиданного токена (' bash: -c: line 0: sudo -S -p '' (echo & quot; wxfLW2qJ & quot; echo & quot; wxfLW2qJ & quot;) | smbpasswd TestUserNew '@Nan – Gourab Banerjee 13 August 2018 в 16:00
  • 2
    Также я создаю smbpassword здесь. – Gourab Banerjee 13 August 2018 в 16:02
  • 3
    Я изменил код соответственно, команда: sudo -S -p '' (echo & quot; CQGqlv7B & quot; echo & quot; CQGqlv7B & quot;) | sudo smbpasswd TestUserNew – Gourab Banerjee 13 August 2018 в 16:35
  • 4
    Но получил следующую ошибку: bash: -c: строка 0: синтаксическая ошибка около неожиданного токена (' bash: -c: line 0: sudo -S -p '' (echo & quot; CQGqlv7B & quot; echo & quot; CQGqlv7B & quot;) | sudo smbpasswd TestUserNew ' – Gourab Banerjee 13 August 2018 в 16:36
  • 5
    @Gourab Banerjee: Удалите первое sudo. – NaN 13 August 2018 в 17:02

Другие вопросы по тегам:

Похожие вопросы: