Как Джефф М намекнул, вы можете сделать это с помощью NetworkManager, и мне очень повезло сделать это.
Создайте файл в /etc/NetworkManager/dispatcher.d/ с именем 50-ethtool-autoneg-off и поместите следующее содержимое в этом. Обратите внимание, что вы можете изменить eth0 на eth*, если вы хотите отключить любое эт-устройство, вы также можете добавить eth*|en*, если у вас есть система, использующая более новые «предсказуемые имена ядер».
#!/bin/sh
myname=${0##*/}
log() { logger -p user.info -t "${myname}[$$]" "$*"; }
IFACE=$1
ACTION=$2
case ${IFACE} in
eth0)
case ${ACTION} in
up)
log "Disabling auto-negotation on $IFACE"
ethtool -s $IFACE autoneg off speed 100 duplex full
;;
esac
;;
esac
В примерах, которые я видел, вам нужны shebang #!/bin/sh или #!/bin/bash, и упомянутые им разрешения определенно важны. Он должен быть как минимум для чтения / выполнения для root, а доступный для записи облегчает обновление без необходимости изменения разрешений или принудительного сохранения вашего редактора.
sudo chmod 0744 /etc/NetworkManager/dispatcher.d/50-ethtool-autoneg-off
Если у вас есть какие-либо проблемы с этим, дайте мне знать и я буду экспериментировать, но в настоящее время я использую аналогичный метод для изменения интерфейса с speed 1000 до speed 100 из-за нестабильности со скоростью по умолчанию.
Возможно, напечатать заявление об отладке стандартной ошибке вместо стандартного вывода?
echo "$1" >&2
Возможно, напечатать заявление об отладке стандартной ошибке вместо стандартного вывода?
echo "$1" >&2
Возможно, напечатать заявление об отладке стандартной ошибке вместо стандартного вывода?
echo "$1" >&2
Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
retval=$? # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"
См. Справочную страницу. Также этот вопрос и эта статья.
В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:
function add_nos {
echo "input: $1" >&2
echo $(($1 + 20))
echo "done now!" >&2
}
echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"
Затем запустите его с и без вывода отладки, перенаправив этот вопрос :
$ bash setup.sh 10
starting script
input: 10
done now!
result: 30
$ bash setup.sh 10 2>/dev/null
result: 30
$ bash setup.sh 10 2>logfile
result: 30
$ cat logfile
starting script
input: 10
done now!
Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
retval=$? # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"
См. Справочную страницу. Также этот вопрос и эта статья.
В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:
function add_nos {
echo "input: $1" >&2
echo $(($1 + 20))
echo "done now!" >&2
}
echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"
Затем запустите его с и без вывода отладки, перенаправив этот вопрос :
$ bash setup.sh 10
starting script
input: 10
done now!
result: 30
$ bash setup.sh 10 2>/dev/null
result: 30
$ bash setup.sh 10 2>logfile
result: 30
$ cat logfile
starting script
input: 10
done now!
Значение return сохраняется в $? после каждого вызова команды / функции. Попробуйте это, чтобы получить к нему доступ:
function add_nos {
echo "$1"
echo $(($1 + 20))
return 1
}
result=`add_nos $1`
retval=$? # this is the "return" value of "add_nos"
echo "result: $result"
echo "return: $retval"
См. Справочную страницу. Также этот вопрос и эта статья.
В качестве другого ответа, предложенного , man page является хорошим местом для отправки вывода отладки. Вы также можете сделать намного больше, чем просто возвращаемое значение. Попробуйте это:
function add_nos {
echo "input: $1" >&2
echo $(($1 + 20))
echo "done now!" >&2
}
echo "starting script" >&2
result=`add_nos $1`
echo "result: $result"
Затем запустите его с и без вывода отладки, перенаправив этот вопрос :
$ bash setup.sh 10
starting script
input: 10
done now!
result: 30
$ bash setup.sh 10 2>/dev/null
result: 30
$ bash setup.sh 10 2>logfile
result: 30
$ cat logfile
starting script
input: 10
done now!