Если ваш 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
.
Я узнал от 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