Как и говорилось в комментариях, ваш тест только показывает, что.desktop не является сценарием оболочки. Вот почему вы получаете все эти ошибки, а также почему вы получаете команду -jar
, не найденную, поскольку в этом тесте вы фактически устанавливаете переменную «exec» = «java», после чего оболочка пытается запустить -jar, который она не найти.
Итак, сначала попробуй
java -jar /home/edoardo/Scrivania/Giochi/Minecraft/Shiginima\ Launcher\ SE\ v3.100.jar
Если это не сработает, вам, возможно, следует сначала разобраться с этим.
Также вы можете установить свой Terminal=true
на данный момент, чтобы вы действительно получали вывод, когда щелкаете файл.desktop, чтобы вы могли видеть, что происходит.
Насколько я понимаю, один udhcpd
будет обслуживать только один сетевой интерфейс за раз, поэтому вам нужно будет запускать его вторую копию с отдельным файлом конфигурации всякий раз, когда вы хотите, чтобы он обслуживал DHCP на эт0 тоже. Это можно назвать /etc/udhcpd-eth0.conf
.
Вам также могут понадобиться две копии /etc/network/interfaces
в другом месте, одна с конфигурацией «DHCP-клиент» для eth0
, а другая — с конфигурацией «DHCP-сервер». Назовем их, например, /etc/network/interfaces.eth0client
и /etc/network/interfaces.eth0server
.
Следующий вопрос: хотите ли вы рассматривать «DHCP-сервер на eth0» как постоянное состояние, которое сохранится после перезагрузки до явного переключения обратно на «DHCP-клиент на eth0», или вы хотите рассматривать «DHCP-сервер на eth0» как переходное состояние, которое будет включено по запросу -и будет длиться только до следующей перезагрузки?
Вы также можете определить отдельный параметр udhcpd-eth0.service
, который должен быть отключен (= никогда не запускаться автоматически ), если вы собираетесь использовать переходный режим. Если вам нужен постоянный режим, его следует включить и запустить при переключении в режим сервера, а также остановить и отключить при переходе в режим клиента.
Сценарий для постоянного переключения режимов должен будет выполнять следующее (в виде псевдокода):
systemctl stop udhcpd-eth0; systemctl disable udhcpd-eth0
. Не обращайте внимания на ошибки здесь.
Запустить ifdown eth0
.
Замените текущий /etc/network/interfaces
на /etc/network/interfaces.eth0client
или /etc/network/interfaces.eth0server
в зависимости от того, в какое состояние вы переходите.
Выполнить ifup eth0
.
Если переключиться в режим DHCP-сервера на eth0, тоsystemctl enable udhcpd-eth0.service && systemctl start udhcpd-eth0.service
Готово!
Если вы хотите, чтобы это было временное состояние, вам может вообще не понадобиться две копии файла /etc/network/interfaces
. В этом случае ваш скрипт будет выглядеть так:
systemctl stop udhcpd-eth0.service
. Он может быть уже остановлен, а может и не остановлен; игнорировать ошибки здесь.
Запустите ifdown eth0
иip link set eth0 down
(или ifconfig eth0 down
, если используются старые инструменты ). Та или иная из этих команд сообщит об ошибке; это ожидается.
Если вы переключаетесь в режим DHCP-клиента, запустите ifup eth0
и все готово. В противном случае сначала используйте команды ip
или ifconfig
, чтобы настроить статический IP-адрес для режима DHCP-сервера -на eth0
, затем запустите systemctl start udhcpd-eth0
.
Готово!
«Вызов сценария переключения из внешнего интерфейса оставлен читателю в качестве упражнения».