Если у вас есть ключ для аутентификации в промежуточной системе BusyBox и вам нужен пароль для конечной системы, просто вызовите sshpass
на исходной системе Ubuntu, и вызовите ssh -t
для достижения системы BusyBox, чтобы был терминал для внутренней команды ssh
, чтобы прочитать ее пароль.
sshpass -p modempassword ssh -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Если вам также нужен пароль для системы BusyBox, вам придется дважды вызвать sshpass
.
sshpass -p busyboxpassword sshpass -p modempassword ssh -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Если по какой-то причине у вас возникли проблемы с настройкой соединения, вы можете сделать это в два шага:
Откройте мастер-соединение к системе BusyBox. Это требует поддержки только на клиенте, на сервере нет ничего особенного.
sshpass -p busyboxpassword ssh -o ControlMaster=auto -f busybox@xx.xx.xx.x sleep 99999999999
Используйте подчиненное соединение с системой BusyBox, чтобы открыть соединение с модемом.
sshpass -p modempassword ssh -o ControlMaster=auto -t busybox@xx.xx.xx.xx ssh modem@xx.xx.xx.xx
Когда вы закончите, закройте соединение с мастером с помощью
ssh -O exit busybox@xx.xx.xx.xx
Я не уверен, что смогу понять вашу логику, но это
awk '/\.design$/ {sub("/[^/]*$", "")} 1 ' file
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping
src/aura/camping/camping.design-meta.xml
даст желаемый результат...
Если вы просто хотите удалить базовое имя всех путей, оканчивающихся на.design
:
sed 's#/[^/]*\.design$##' final.txt
Чтобы выполнить редактирование места -, используйте sed -i
с приведенным выше выражением (существуют небольшие вариации того, как работает флаг -i
, но это будет работать, например, с GNU sed
).
Регулярное выражение /[^/]*\.design$
соответствует /
, за которым следует любое количество символов, отличных от -/
, и литеральная строка .design
в конце строки.