Как создать псевдоним для одновременной работы сервера и его клиента
Я пытаюсь создать "псевдоним" для запуска сервера в отдельном терминале, а затем через несколько секунд открыть его клиент, я пытаюсь выполнить команду:
alias kingp='xterm -e sudo /opt/king-phisher/KingPhisherServer -L INFO -f /opt/king-$/king-phisher/server_config.yml; /opt/king-phisher/KingPhisher'
Проблема в том, что он не запускает вторую команду до тех пор, пока я не закрою сервер (CTRL+C), и на них он нормально запускает клиент. Я пытался использовать & и && в конце команды сервера, но безрезультатно. кажется, что сервер, даже будучи запущенным с -e, все еще не освобождает терминал для запуска другой команды, я успешно работал с -e и не знаю, почему в псевдониме он не работает, любой может Помоги мне? спасибо большое ребята
1 ответ
Проблема в том, что псевдоним сначала интерпретируется Bash, а затем XTerm.
Bash интерпретирует весь псевдоним как две отдельные команды: xterm -e sudo /opt/king-phisher/KingPhisherServer -L INFO -f /opt/king-$/king-phisher/server_config.yml
а также /opt/king-phisher/KingPhisher
и команды выполняются одна за другой в текущей оболочке.
С помощью &
вместо ;
не поможет, потому что Баш все равно будет интерпретировать &
; побег ;
или же &
тоже не поможет, потому что XTerm не имеет представления о синтаксисе Bash и будет проходить либо ;
или же &
в качестве аргумента /opt/king-phisher/KingPhisherServer
(вместе с остальной частью команды, /opt/king-phisher/KingPhisher
).
Единственное решение состоит в том, чтобы сказать XTerm, чтобы он вызвал Bash и позволил Bash выполнить анализ:
alias kingp="xterm -e bash -c 'sudo /opt/king-phisher/KingPhisherServer -L INFO -f /opt/king-$/king-phisher/server_config.yml & /opt/king-phisher/KingPhisher'"
Если ваш пользователь не должен предоставлять sudo
пароль для запуска /opt/king-phisher/KingPhisherServer
это приведет к тому, что сервер не запустится из-за sudo
команда должна быть перед тем как прочитать пароль; см. здесь возможные решения: как запустить команду sudo, требующую ввода пароля в фоновом режиме?,