Хорошо, прошло некоторое время, хотя у меня наконец-то появилось время, чтобы сесть и написать свое решение. Это был мой первый раз, когда я писал сценарий bash, так что это было захватывающе.
В итоге я использовал комбинацию из 3 сценариев, 2 из которых получили права root в файле sudoers. Возможно, есть лучший способ сделать это; однако я просто указал полный путь к скрипту.
Судо Визудо
Затем под вкладкой #includedir /etc/sudoers.d
userName ВСЕ = NOPASSWD ПУТЬ/AutoStartMiner.sh, ПУТЬ/TeamRedMiner_Config.sh, Путь/teamredminer
Это подготовит почву для того, чтобы 3 скрипта работали один за другим без проблем.
Чтобы запустить AutoStartMiner.sh в окне терминала, я использовал эмулятор gnome-terminal. Для тех, кто реализует что-то подобное, вам необходимо установить эмулятор через:
sudo apt установить gnome-терминал
Затем я воспользовался центром конфигурации LXQT и перешел к настройкам сеанса. В настройках сеанса я установил сценарий StartTerminalASM.sh для выполнения после загрузки системного трея. Это было достигнуто нажатием кнопки «Добавить», присвоением функции автозапуска имени, вставкой полного пути к сценарию, включая сам сценарий, а затем нажатием на поле с надписью «Загрузить после системного трея». Важно отметить, что этот первый скрипт не нужно запускать с повышенными привилегиями, поэтому этот метод работает. Функция автозапуска LXQT не запускает сценарии, требующие повышенных привилегий, автоматически.
Вот содержимое первого скрипта: StartTerminalASM.sh
#!/бин/баш
gnome-terminal --command="bash -c 'sudo /home/userName/Scripts/AutoStartMiner.sh; $SHELL'"
Этот скрипт просто запускает AutoStartMiner.sh в терминале gnome. Поскольку мы ранее добавили этот скрипт в файл sudoers, команда sudo выполняется без запроса пароля.
Вот второй скрипт: AutoStartMiner.sh
#!/бин/баш
# Подскажите пользователю информацию.
echo "Майнер начнется через 60 секунд."
echo "Нажмите s + enter, чтобы остановить процесс и возобновить нормальную работу."
# Переменные Делара.
ввод = "а"
пусть секунды = 60
# Ждите ввода пользователя и обратного отсчета.
в то время как [$seconds -gt 0]; делать
printf "\r........."$секунд
читать -s -t 1 ввод
пусть "секунды-=1"
если [ "$ input" = "s" ] || [ "$ input" = "S" ]; тогда
сломать
фи
сделано
эхо
#Начать выбор пользователя
если [ "$ input" = "s" ] || [ "$ input" = "S" ]; тогда
echo "Возобновление нормальной работы."
спать 2
еще
echo "Запуск майнера."
спать 2
sudo /home/userName/Documents/Crypto/Miners/TeamRedMiner/teamredminer-v0.8.4-linux/TeamRedMiner_Config.sh
фи
Так что это по существу делает то, что я описал в исходном вопросе. Единственная проблема заключается в том, что когда время падает ниже 10 секунд, по какой-то причине на месте 1 появляется 0, а на месте 10 начинается отсчет чисел (например, 10, 90, 80, 70, ... и т. д.). ). Наверное, я что-то не совсем понимаю в printf
заявление, которое я сделал. Аналогично выше, судо
Команда здесь не запрашивает пароль из-за строки, созданной в sudoers.
Наконец, он выполняет третий скрипт: TeamRedMiner_Config.sh.
Этот скрипт просто устанавливает параметры для запуска майнера. Он также запускает майнер с судо
, поэтому мы добавляем третью команду в sudoers, чтобы убедиться, что для запуска самого майнера не требуется приглашение.
Таким образом, если пользователь не предложит системе остановить запуск майнера, майнер будет выполняться без каких-либо входных данных. Это чрезвычайно полезно, так как избавляет меня от массы головной боли, если произойдет сбой ядра. Я просто нажимаю кнопку питания и бум, через минуту майнер запускается. Если бы я действительно хотел автоматизировать это, я мог бы сделать небольшой сервопривод, чтобы нажимать кнопку или настроить пробуждение по локальной сети.
Это все, как говорится, это на последнюю проблему. После обновления до ядра Linux 5.11.0-27-generic мой беспроводной адаптер отказывается подключаться к моей сети, хотя, по крайней мере, он распознается системой.
Спасибо всем за участие, и я надеюсь, что однажды это поможет другим новичкам, таким как я.