Я столкнулся с этой проблемой вчера и нашел два метода:
Добавить правило, разрешающее доступ к команде без пароля.
# visudo
Замена имени пользователя:
...
username ALL=(ALL) NOPASSWD: /bin/cat /proc/net/wireless
...
Некоторые недостатки включают загрязнение журнала auth, особенно если проверять сигнал каждые несколько секунд, а также необходимость добавить sudo
к этим скриптам.
Дайте бинарные CAP_NET_ADMIN
# setcap cap_net_admin+ep /bin/cat
+
для добавления и -
для удаления
Больше информации на man cap_from_text
Отказ от ответственности: CAP_NET_ADMIN
- это форма повышенных привилегий. Позволяет наносить вред таким вещам, как конфигурация сети и брандмауэры. В моем случае он нужен только для grep
, используемого в блокчейне i3. Я сам не уверен, каков риск в этом случае, и был бы признателен за комментарии.
Редактировать:Я только что понял, что first
, second
— это просто заполнители для ваших настоящих имен каталогов, верно? В этом случае вместо псевдонима вы можете создать функцию в своем~/.bashrc
:
function pipe(){
first=$1
second=$2
cd -- "$first"; pwd; ls; cd -- "$second"; ls
}
Источник вашего ~/.bashrc
, а затем вы можете вызвать канал с 2 входными аргументами (имена ваших first
и second
каталогов:
pipe first_dir_name second_dir_name
=====
Вы можете создать псевдоним для этой серии команд.
Добавьте в ~/.bashrc
следующую строку:
# 'pipe' is the name of your alias, you can choose any name you want
alias pipe="cd first; pwd; ls; cd second; ls"
Источник вашего ~/.bashrc
файла:
. ~/.bashrc
Теперь вы можете начать выполнять pipe
в своем терминале, который будет выполнять вашу серию команд. Конечно, вы должны убедиться, что вы вызываете pipe
из правильного каталога, который позволяет вам cd
в каталоги first
и second
.