Как автоматически смонтировать файловую систему ssh по запросу с помощью ключа RSA

Пара вариантов awk (при условии, что ваш файл находится внутри переменной $file)

  • Здесь вы можете выполнить цикл для всех coloumn, печать с разделителем полей (OFS) и печать терминатора записи (ORS) в конце строки.

    awk -F',' -v OFS=, \
    '{for(i=1;i
  • Здесь с использованием regex и gensub() функции

    gawk -F',+' -v OFS=, '{$0=gensub(/\s*\S+/,"",7) OFS $7}1' "$file"
    

    убивая 7 поле и печатая его в конце строки.

    • $0 - вся запись
    • $n - n запись
    • NF - количество полей текущей строки
    • OFS - разделитель выходных файлов
    • NF - разделитель выходных файлов. разделитель выходных файлов
    • ORS терминатор выходной записи
    • 1 - это трюк, который нужно сказать awk true и вывести значение по умолчанию ($0).

Update...

Чуть не забыл, можно сдвинуть все столбцы, следующие за 7.

awk  -F',' -v OFS=, '{tmp=$7; for(i=7;i<=NF;i++) $i=$(i+1); $NF=tmp}1 ' "$file"

3
12.09.2016, 14:26
2 ответа

Поскольку SSHFS основан на FUSE, проще использовать средство автомонтирования без полномочий root. Используйте предохранитель , это почти то, для чего он был разработан. Одноразовая настройка:

mkdir ~/.afuse
ln -s .afuse/raspberrypi/server_folder ~/raspberrypi

Для запуска автомонтирования:

afuse -o mount_template="sshfs %r:/ %m" -o unmount_template="fusermount -u -z %m" ~/.afuse

Убедитесь, что переменная SSH_AUTH_SOCK установлена ​​при запуске предохранителя , т.е. он должен запускаться после ssh-агент . Запустите ssh-add , чтобы загрузить ключ в агент SSH, и тогда вы сможете получить доступ к каталогам SSHFS.

3
27.01.2020, 21:22

Чтобы расширить правильный ответ Жиля и рассмотреть некоторые дополнительные мысли, высказанные в комментариях к его ответу, относительно «Интеграция в (профиль )запуск (сценарии ):

Вы можете включить по -требованию монтирование, добавив вызов скрипта в ваш, например.~/.profileили создать единицу обслуживания systemd уровня пользователя .

Я одобряю ответ :~/.config/systemd/user/afuse.service

[Unit]
Description="SSHFS via Afuse automounter"
AssertPathExists=%h/scp/
AssertFileIsExecutable=/usr/bin/afuse
AssertFileIsExecutable=/usr/bin/sshfs

[Service]
Type=forking
WorkingDirectory=%h/scp
ExecStart=/usr/bin/afuse \
    -o mount_template="sshfs -o ServerAliveInterval=10 -o reconnect %%r:/ %%m" \
    -o unmount_template="fusermount -u -z %%m".
Restart=always
PrivateTmp=true
#NoNewPrivileges=true
#Environment=

[Install]
WantedBy=default.target
0
27.01.2020, 21:22

Теги

Похожие вопросы