Пишут интерестную штуку - DSL для работы с удаленным Shell. Позволяет написать небольшой скриптец локально, который сможет производить рутинные операции на удаленных машинах с эффективными ожиданиями запуска программ, заходами в разные environments, однострочечниками для поиска ошибок в логах. Позволяет или спросить пароль один раз или вообще его записать в конфиг и он будет юзаться во всяких sudo.
Вообще внутрення тулзовина, но возможно перепишу потом под универсальную и опенсорцну. Прелесть в том что все запускается из под винды pure-java приложением без сторонних ssh клиентов и сложный flow со 100500 валидаций будет сводиться к даблклику по батнику. Скрипты очень краткие и на Scala.
host("host1"){
implicit val usePassword = properties("password")
login("myuser"){
shell{
su("someotheruser"){
env("testing"){
println("I am: "+commandResult("whoami")(0))
commandResult("ls -la").foreach{x=>
println(x)
}
}
}
}
}
}
Не могу написать env. Суть в том чтобы выполнить скрипт, который запустит новую bash сессию. Выполнить код внутри замыкания, а потом выполнить exit.
Допустим скрипт testing делает
bash --rcfile /home/user/.mytesting_profile
Если выполнить его в putty, то все работает. Если же через мою тулзовину, то оно заходит в bash, но профиля как будто не применялось. alias пуст. Что вызывает баттехерт, так именно через них реализовано много наших комманд.
Выполнение внутри этого bash
source /home/user/.mytesting_profile; echo $?
Возвращает 0 и ничего не выводит на экран, хотя в профиле есть вывод
Какого фига не работает source?
Все усложняется тем, что я не могу юзать source напрямую, так как в общем случае я не знаю имя профиля, оно может меняться, я должен юзать скрипт на подобии testing