первое изменение, что 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" файл...),
Начало процесса внутри пространства имен сети , которые могут видеть только желаемый 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 в пространствах имен также полезно.