lesar
(Leonardo Saracini)
January 8, 2024, 7:33am
1
On workstation Fedora 39 I have set a proxy by this:
/etc/dnf/dnf.conf
proxy=http://<myurl>:port
All work but if http://<myurl>:port
is down, All fail.
I like to setup a fallback beaviour if proxy is not reachable.
How can tell to dnf to ignore proxy setting if proxy fail?
It is possible?
I search by google but haven’t find any solution
best regards,
Leonardo
vgaetera
(Vladislav Grigoryev)
January 8, 2024, 8:46am
2
sudo tee /etc/profile.d/dnf.sh << "EOF" > /dev/null
dnf() {
local PROXY="domain:port"
local OPTION
if ping -q -c 1 -W 3 "${PROXY%:*}" &> /dev/null
then OPTION="--setopt proxy=http://${PROXY}"
else OPTION=""
fi
sudo dnf ${OPTION} "${@}"
}
EOF
. /etc/profile.d/dnf.sh
2 Likes
lesar
(Leonardo Saracini)
January 8, 2024, 1:05pm
3
thanks @vgaetera Your solution work well but I have do some chenge to let the command work using sudo: typing the command like $ sudo dnf ...
I write file 99% like yuour:
$ sudo vim /usr/local/bin/_dnf
(I add 2 echo command to let me see if the proxy is up)
#!/bin/bash
_dnf() {
local PROXY="<my-proxy-url:port>"
local OPTION
if ping -q -c 1 -W 3 "${PROXY%:*}" &> /dev/null
then
OPTION="--setopt proxy=http://${PROXY}"
echo "proxy==http://${PROXY}"
else
OPTION=""
echo "no proxy"
fi
sudo dnf ${OPTION} "${@}"
}
_dnf "${@}"
exit 0
then
$ sudo chmod ugo+x /usr/local/bin/_dnf
then I modify my alias:
$ vim ~/.bashrc.d/0010-aliases.rc
alias sudo='sudo '
alias dnf='_dnf'
The sudo alias need to make alias metch $ sudo command
using this we can use transparent command like
$ sudo dnf info neovim
and all work well.
best regards,
Leonardo
lesar
(Leonardo Saracini)
January 12, 2024, 3:06pm
4
Update
there is a problem if we call $ sudo dnf ${OPTION} "${@}"
some alias not work so I have change the script and add noproxy option in the rare case we won’t to not use the proxy and not disable the alias.
#!/bin/bash
_dnf() {
local PROXY="<my-proxy-url:port>"
local OPTION
if [ "noproxy" != "$1" ]
then
if ping -q -c 1 -W 3 "${PROXY%:*}" &> /dev/null
then
OPTION="--setopt proxy=http://${PROXY}"
echo "proxy==http://${PROXY}"
else
OPTION=""
echo "no proxy"
fi
sudo dnf "${@}" ${OPTION}
else
set -- "${@:2}"
sudo dnf "${@}" ${OPTION}
fi
}
_dnf "${@}"
exit 0