Переименовать окно TMUX на основе пользовательской функции в ZSH

Если ваш specialCommandна самом деле не требует tty, и вы заставили sshсделать его только для sudoзапроса пароля, другой альтернативой является:

(echo "mypass" ; cat commandInput) | ssh user@ip "sudo -Sp '' specialCommand"

Опция -Sиз sudoзаставляет считывать пароль со стандартного ввода, который в данном случае исходит от вашего echo "mypass", в то время как опция -p ''гарантирует, что запрос пароля также не будет отображаться.

Тогда вы можете поместить свой пароль в отдельный файл, защищенный соответствующими разрешениями. Обычно это лучшая практика, чем жестко запрограммировать пароль в скрипте. Тогда команда станет:

cat passwordFile commandInput | ssh user@ip "sudo -Sp '' specialCommand"

В этом последнем случае убедитесь, что файл паролей состоит ровно из одной строки только с паролем и ничего больше, иначе то, что следует после строки пароля, загрязнит ввод для вашего specialCommand.

1
31.03.2021, 17:27
1 ответ

Я узнал от NotTheDr01ds, что можно просто переименовать окно из ZSH, поэтому я сделал что-то вроде этого:

function getCustomWindowName {
  # runs 'sed' on 'pwd' to get special dir name
  # and set it to $workspace
  if $workspace is valid; then
    tmux rename-window $workspace
  fi
}

# only allow unique values in this array
typeset -U chpwd_functions
# run this function when current working directory changes.
# Variables $PWD and $OLDPWD.
chpwd_functions+=(getCustomWindowName)
# Try to update when a new window is opened.
getCustomWindowName
0
28.04.2021, 22:54

Теги

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