Для этой строки это преобразование должно работать:
sed 's|.*/\(.*\)/.*/\(.*\)/\(.*\)/\(.*\)\.png\(...\)\(....\)|\1,\2,\3,\4,\5\,\6|'
Если другие строки не соответствуют формату, вы столкнетесь с проблемами - в том числе, если последние две части имеют разную длину.
Лично я не знаю, есть ли возможность разрешить обычным пользователям запускать команды в разных сетевых пространствах имен, но этот аннотированный сценарий оболочки может лучше удовлетворить ваши потребности:
#!/bin/bash
# ip netns wrapper script, nns.
# Usage: nns nsname cmdline
case "${1}" in
do)
shift # remove "do"
NSNAME="${1}" # remember nsname
shift # remove nsname to get argument list for su -c
[ -z "${NSNAME}" -o -z "${1}" ] && exit 1 # if either nsname or arglist is empty - error out
echo ip netns exec "${NSNAME}" su "${SUDO_USER}" -c "${*}" # execute, ${*} merges separate arguments into single word for su/sh -c parsing. See with strace.
;;
*)
SCRIPTNAME="${0}" # remember script full path
exec sudo "${SCRIPTNAME}" do "${@}" # run it through sudo with elevated privileges
;;
esac
Установите его где-нибудь в / usr / bin
и позвольте пользователям запускать его.
Решение 1
Просто добавьте группу с именем «netns» и добавьте в нее всех нужных пользователей. Затем передайте право собственности на root:netns и предоставьте группе права чтения/исполнения.
Другими словами:
# New group netns
sudo groupadd --system netns
# Add root to "netns", not sure if needed
sudo usermod -aG netns root
# Do this for every needed user
sudo usermod -aG netns $UserName
# Change ownership to root, grant rw acces to group netns
sudo chown root:netns /path/to/netns-exec.sh
sudo chmod 633 /path/to/netns-exec.sh
Решение 2
Это решение проще, вам нужно отредактировать файл sudoers, как показано в этом примере.
user ALL=(ALL) /bin/ip netns
Пожарная тюрьмаможет сделать работу
firejail --noprofile --netns=nameOfNetSpace command
В качестве альтернативы Netns -Exec , Nsutils и Netnsне требует root