LINUX.ORG.RU

bash rcfile, нет aliasов


0

1

Пишут интерестную штуку - 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

★★★★★

Последнее исправление: vertexua (всего исправлений: 3)

Eсли выполнить его в putty, то все работает.

-l, конечно, пробовали добавить?

_Возвращает 0_ и ничего не _выводит_ на экран,

то есть «echo ..» именно возвращает значение?, тогда почему вывод в файле должен _выводить_?

// А баш точно здесь нужен? (< > | & сильно используются)

anonymous
()

Пофиксил, все дло было в тулзовине, нашем аналоге sudo, она была запущена в pipe режиме, и это меняло все поведение

vertexua ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.