Linux: там удобным путем является должностному лицу программа, связывающая его с предпочтительным IP-адресом?

первое изменение, что 1-я awk строка с:

dir="$(echo "$i" | awk '{split($0,a,"_"); printf "%s_%s",a[1],a[2]}')"

так, чтобы, в случае, если они содержат пробелы, это все еще работало.

Затем замените "поскольку я в" строке с:

echo -e "$tosend" | grep -v '^$' | sort | uniq | while IFS= read i ;do

и добавьте некоторых "" вокруг соответствующих мест:

#!/bin/bash  
tosend=""  
for i in 20*.log*; do     
    dir="$(echo "$i" | awk '{split($1,a,"_"); printf "%s_%s",a[1],a[2]}')";  
    if [ ! -d "$dir" ]; then  
        mkdir "$dir" || { echo "ERROR during: mkdir '$dir'" ; exit 1 ; };  
    fi;  
    cp "$i" "$dir" || { echo "ERROR during: cp '$i' '$dir'" ; exit 2 ; };  
    tosend="${tosend}\n${dir}"  
done  
echo -e "$tosend" | grep -v '^$' | sort | uniq| while IFS= read i ;do  
    echo "Compressing $i"  
    echo REMOVE THIS ECHO ONCE TESTED tar -zcvf "${i}.tar.gz" "$i" \
    && { echo REMOVE THIS ECHO ONCE TESTED scp "${i}.tar.gz" user@server:/tmp/somedir/ \
         || { echo "ERROR during: scp '${i}.tar.gz' user@server:/tmp/somedir/" ; exit 4 ; };
       }
    || { echo "ERROR during: tar -zcvf '${i}.tar.gz' '$i'" ; exit 3 ; }; 
done  

можно хотеть вынуть "v" часть в tar, сохранить некоторый дисплей (после того как Вы знаете, что это работает),

иначе для вышеупомянутого:

замените мой

for i in 20*.log*; do 

с:

ls -1d *|grep '^[0-9]*-[0-9]*-[0-9]*_[0-9]*_[0-9]*\.log.*'| while IFS= read i ; do

Или упростите grep:

ls -1d *|grep '^[0-9_-]*\.log' | while IFS= read i ; do

который должен быть достаточно (но мог соответствовать "./-_-1234.log.hahaha" файл...),

11
14.09.2014, 07:32
1 ответ

Начало процесса внутри пространства имен сети , которые могут видеть только желаемый IP-адрес, может выполнить что-то подобное. Например, предполагалось, что я только хотел, чтобы Localhost доступен для конкретной программы.

Во-первых, я создаю пространство имен сети:

ip netns add limitednet

пространства имен имеют интерфейс обратной связи по умолчанию, поэтому теперь мне просто нужно взять его вверх:

sudo ip netns exec limitednet ip link set lo up

Теперь я могу запустить программу, используя IP-netns И он сможет увидеть только интерфейс петля:

sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

, если я хотел ограничить его по адресу, отличному от localhost, я мог бы добавить другие интерфейсы в пространство имен, используя:

ip link set DEVICE_NAME netns NAMESPACE

Мне придется экспериментировать Немного больше, чтобы выяснить, как добавить один IP-адрес в пространство имен в случае, когда интерфейс может иметь более одного IP-адреса

Статья LWN в пространствах имен также полезно.

12
27.01.2020, 19:58

Теги

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