Способность сделать это на одной строке в csh/tcsh несколько ограничено, как указано на этой странице:
К сожалению, csh не позволяет использование''; вместо символов новой строки в начале цикла, таких как:
foreach fn ( * ) ; file $fn ; end
<-Это не работаетВ этом случае необходимо обратиться к более косвенным методам.
alias check_ultras '(echo "foreach host ( tlsc0{1,2,3,4} ) " ; echo "echo :::: "\$"host :::: " ; echo "rsh "\$"host top -n -d1 7" ; echo "end" ) | csh'
- или -
echo "while ( 1 ) \n" "xset "{,-}"led 2; sleep 1 \n" end | csh -f
Таким образом в Вашем случае, Вы могли сделать что-то как:
alias change_files '(echo "set n=0; foreach txt ( *_*.txt )"; echo "sed 's/_/-/g' "\$"txt"; echo "@ n ++"; echo "end"; echo "echo You changed "\$"n files) | csh'
change_files
(или, чтобы не создавать отдельный псевдоним:)
'(echo "set n=0; foreach txt ( *_*.txt )"; echo "sed 's/_/-/g' "\$"txt"; echo "@ n ++"; echo "end"; echo "echo You changed "\$"n files) | csh'
Но Вы могли, вероятно, сделать это легче иначе. Что Вы на самом деле пытаетесь сделать - переименовывают файлы или изменяют содержание тех файлов?
Это в значительной степени правильно — хотя Вы пропускаете строку как это:
lxc.network.ipv4.gateway = X.X.X.X
У меня есть гостевая работа LXC Debian. Во-первых, Вы настраиваете мост хоста (простой способ), в /etc/network/interfaces
:
auto wan
iface wan inet static
address 72.X.X.X
netmask 255.255.255.0
gateway 72.X.X.1
bridge_ports wan_phy # this line is important.
bridge_stp off
bridge_fd 2
bridge_maxwait 20
В Вашем случае Вы назвали его br0
, и я назвал его wan
. Мост можно назвать чем-либо, что Вы хотите. Вы получаете эту работу сначала — если она перестала работать, займитесь расследованиями с (например) brctl
Затем Ваша конфигурация LXC настраивается для присоединения к тому мосту:
lxc.utsname = FOO
lxc.network.type = veth
lxc.network.link = wan # remember, this is what I call my bridge
lxc.network.flags = up
lxc.network.name = v-wan # optional, I believe
lxc.network.ipv4 = 72.X.X.Y/24 # different IP than the host
lxc.network.ipv4.gateway = 72.X.X.1 # same as on the host
Как HoverHell отмечает, кто-то с корнем в контейнере может изменить IP-адрес. Да. Это - мост (иначе Ethernet-коммутатор). Если Вы хотите предотвратить это, можно использовать правила брандмауэра о хосте — по крайней мере, в моем случае, пакеты должны пройти iptables хоста.
Я еще не играл с LXC, но эта статья должна выручить Вас: конфигурация сети с помощью мостов Ethernet (проверяют Метод 2).
Чтобы дать Вам, некоторая подсказка о конфигурации (я принимаю Вас, уже имеет br0 правильно ocnfigured):
ip link add type veth
brctl addif br0 veth0
ns_exec -nm -- /bin/bash
ip link set veth1 netns PID_OF_LXC_SHELL
Я не добрался полностью в LXC,
но я имею, устанавливают несколько контейнеров с, там владеют статическим IP в LAN, которые обеспечивают интернет-сервисы для некоторых моих веб-сайтов...
Возможно, это может помочь, на том, что Вы хотите для Вашего.
Я выполняю несколько контейнеров, как так,
НА ХОСТ-МАШИНЕ я Отредактировал Файл Хоста, Добавив Каждую Контейнерную и Хост-машину: vi/etc/hosts
lxc host machine: 192.168.1.100
container1: 192.168.1.101
container2: 192.168.1.102
container3: 192.168.56.102
container4: 192.166.56.103
после сохранения...
Снова, На хост-машине я установил сеть и мост к:
# /etc/network/interfaces
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
**address** 192.168.1.100
netmask 255.255.255.0
**network 192.168.1.1**
**broadcast** 192.168.1.100
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
выше сети мой IP маршрутизатора, для LAN. (внутренний) адрес и широковещательная передача являются хост-машиной, внутренним IP, который я позже использую VHOST для доступа в Интернет, веб-серверов, ftp, и т.д.
ДЛЯ КОНТЕЙНЕРОВ LXC 1-4 Я УСТАНАВЛИВАЮ КОНФИГУРАЦИЮ КАК ТАК:
LXC CONFIG
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
**lxc.network.ipv4=192.168.1.101**
теперь Контейнер 1 IP = 192.168.1.101
я повторяюсь, чтобы дополнительные контейнеры имели там собственный статический IP на LAN..
в контейнере 1-4,
войдите в систему от хоста:
lxc-console -n CONTAINERNAME,
И я установил каждую сеть контейнеров на помехи, eth0 к:
auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.1.101
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
КАЖДЫЙ ИЗ КОНТЕЙНЕРОВ ИМЕЕТ IT СОБСТВЕННЫЙ IP, (локальный) ДОСТУПНЫЙ НА LAN. ВЫ CAN SSH КАЖДЫЙ ОТДЕЛЬНЫЙ ЛОКАЛЬНЫЙ IP, ДЛЯ ТЕСТИРОВАНИЯ ИСПОЛЬЗУЯ ШПАКЛЕВКУ!
После этого я - вполне уверенный u, должен выяснить, как выполнить их через Интернет после, пример, vhost к контейнерному IP / подсистемы балансировки нагрузки / прокси / и т.д.
Возможно, эта установка может выручить в так или иначе.
iface
строка файла конфигурации к manual
(нет static
или dhcp
). up
, down
, dns-nameservers
и т.д. может все еще использоваться в Debian и т.д.
– 0xC0000022L
16.05.2015, 03:17
CLI клиента LXD, lxc
, позволяет настроить тип сетевого интерфейса; установите его на macvlan
для профиля default
.
lxc profile device set default eth0 nictype macvlan
Контейнеры, использующие профиль default
, будут иметь IP-адрес в локальной сети.
auto
также допустимое значение дляlxc.network.ipv4.gateway
и, к моему пониманию, значениям по умолчанию к IP моста, к которому подключается veth-интерфейс. – 0xC0000022L 16.05.2015, 03:15wan_phy
действительно ли направление является Интернетом, затем IP моста должен был бы быть еще одним допустимым, общедоступным адресом IPv4, потому что это должно быть в той же подсети как другие общедоступные адреса IPv4, что я настрою своих lxc гостей с, правильно? Но это кажется довольно расточительным. askubuntu.com/a/884293/394569 предполагает, что конфигурирование адреса моста строго не требуется. – josch 06.07.2017, 04:10