1

Поэтому я пытаюсь создать скрипт установки для моих малинов, во-первых, дать им статический IP-адрес.

echo -e "Enter static IP"
read static_ip

echo -e "Enter DNS IP"
read dns_ip

echo -e ""
echo -e "The following settings will be set"

echo -e "\e[32mStatic IP:\e[0m\t${static_ip}"
echo -e "\e[32mDNS IP:\e[0m\t${dns_ip}"

sudo echo "interface wlan0" >> /etc/dhcpcd.conf
sudo echo "static ip_address=${static_ip}/24" >> /etc/dhcpcd.conf
sudo echo "static routers=${dns_ip}" >> /etc/dhcpcd.conf
sudo echo "static domain_name_servers=${dns_ip}" >> /etc/dhcpcd.conf

Но он продолжает говорить: "Отказано в разрешении", мне было интересно, что я здесь делаю не так?

2 ответа2

4

Перенаправление (>>) выполняется оболочкой; Ваше sudo влияет только на echo .

Вы можете использовать этот трюк:

echo "something" | sudo tee -a /output/file > /dev/null

Таким образом, tee добавит текст в /output/file с соответствующими разрешениями.

РЕДАКТИРОВАТЬ (отвечая на комментарий): tee предназначен для передачи своих входных данных и их дублирования (в целом: умножение). В этом случае одна копия отправляется в файл, а другая перемещается по трубе. Так как нам нужен только первый, мы перенаправляем вторую копию в /dev/null чтобы она не отображалась в консоли. Все, что идет в /dev/null исчезает.

0

Вам нужно запустить его в подоболочке, чтобы перенаправление работало.

sudo sh -c echo "string" >> file

[со страницы руководства sudo: примеры]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .