У мене є кілька машин, на які я регулярно натрапляю, лише з метою проведення sudo suрешти мого сеансу, який увійшов у систему як якийсь користувач спеціального призначення. Загальний робочий процес:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Я хотів би закинути це в одне вкладиш, яке я можу псевдонімом, тому я можу просто встановити псевдонім для кожної машини і дістатися туди, де мені потрібно, в одній команді, без необхідності набирати sudo su - specialuserкотельну плиту. Я міг би , можливо , встановити me@othermachineна sudo suвході в систему, але я хотів би зберегти гнучкість , щоб працювати , як meякщо мені потрібно.
( Примітка. Я не маю ніякого контролю над othermachineтим, як він налаштований; це усталений робочий процес, до якого я прийшов, коли мене найняли.)
Перша моя думка була просто
ssh me@othermachine "sudo su - specialuser"
і подібний вид працює, але мене це не підказує, ^Cвбиває його і реєструє мене, і я припускаю, що різні речі також, мабуть, помиляються.
Прочитавши команду Run Remote ssh з програмою Shell Full Login, я спробував ще кілька екзотичних речей, таких як
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
і
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- жоден з яких я не розраховував працювати, і вони цього не зробили, але я подумав, що я повинен спробувати їх для повноти (і щоб уникнути наближення); вони створили ту саму оболонку без підказок (друга з доданою бонусною оболонкою без підказок для meпісля exit-ing від тієї для specialuser). І я спробував
ssh me@othermachine "sudo su - specialuser -c bash -l"
але це мене просто дістало
sudo: no tty present and no askpass program specified
Кращі ідеї?
sudoя потрапив ^C? Якщо я не можу придумати нічого кращого, я б спробував це.
su meз specialuser. Або в .profileабо .bashrc, якщо ви не слідувати sudoз exit, вашим першим exitдоставлять вас назад me, з другим до кінця сесії. Або навіть використовувати файл прапора, тому sudoйому передує [ -f ~/.keep.me ] && del ~/.keep.meта супроводжується [ \! -f ~/.keep.me ] && exit: тоді вам потрібен лише сценарій або псевдонім для команди meяк :>~/.keep.me; exit. Зараз exitзавершиться сеанс і meповернеться до вашого сеансу входу.
~/.profileпісля короткої затримки?