Я работаю над новой системой для автоматизации установки драйверов в Windows 10/11. Некоторое время назад я загрузил набор драйверов из пакета драйверов (коллекция драйверов в порядке, но программное обеспечение для управления установками, я думаю, может содержать вирусы…) Так что я могу установить почти любой драйвер для Windows, но он длится долго. . У меня есть коллекция драйверов в общем ресурсе SAMBA на моем сервере (СВОБОДНЫЙBNT впредь. Это Ubuntu 22.04.1). Поэтому, когда я хочу установить какие-либо драйверы, мне приходится искать правильный файл .inf в коллекции, и это может занять около 20 минут или более. Затем мне недавно пришла в голову идея сделать базу данных драйверов (MySQL) с идентификаторами оборудования и путями к файлам (для .inf
файлы) и выполнить PowerShell скрипт для автоматизации установки драйверов с использованием базы данных и загрузки драйверов через САМБА. я спросил ЧатGPT сделать код для меня, и это мне очень помогло, но в предложенном решении есть некоторые ошибки. Проект состоит из 2 основных частей:
- создание базы данных MySQL с таблицей, которая, в свою очередь, имеет два столбца:
hwid
иpath
содержащий записи для каждого.inf
файл и его идентификаторы оборудования. - создание различных необходимых сценариев powershell для установки драйверов с использованием предыдущей базы данных.
Прямо сейчас я нахожусь на первом этапе — создание базы данных. Но сценарий, предоставленный ЧатGPT не идеально. вот сценарий. Примечание: СВОБОДНЫЙBNT это сервер с большим объемом памяти. Он действует как САМБА сервера и другие функции, но в данном случае важно то, что он действует как MySQL сервер и САМБА сервер, а также он будет запускать сценарий оболочки bash который создаст базу данных MySQL, включая все файлы .inf и их идентификаторы оборудования. Вот сценарий.
#!/bin/bash
# Set up MySQL database connection parameters
db_user="mymysqluser"
db_pass="mymysqlpass"
db_name="drivers"
db_host="127.0.0.1"
# Set up the path to your drivers collection
drivers_path="/free/fr/drivers/"
# Loop through all INF files in the drivers collection
for inf_file in $(find "$drivers_path" -type f -name "*.inf"); do
# Extract hardware IDs from INF file
hwids=$(grep -iE "^driverver|^pci|usb\\\\" "$inf_file" | awk -F ",|=" '{print $2}' | tr -d ' ' | sort -u)
#convert the inf file path to a path readable by Windows systems through SAMBA (added by borhacker)
inf_file2=$(echo $inf_file | sed 's/\/free\/fr\/drivers\//\\\\192.168.1.2\\Fr-drivers\\/')
inf_file3=$(echo $inf_file2 | sed 's/\//\\/g')
# Loop through all hardware IDs and insert them into the database
for hwid in $hwids; do
echo "Inserting $hwid for $inf_file3 into database..."
mysql -u $db_user -p$db_pass -h $db_host $db_name -e "INSERT INTO drivers (hwid, path) VALUES ('$hwid', '$inf_file3');"
done
done
Раздел с пометкой «добавил борхакер‘ сделано мной, потому что пути к файлам не совпадают с СВОБОДНЫЙBNT или из Windows 10 доступ к САМБА делиться. Итак, когда переменная inf_file
содержит, например:
/free/fr/drivers/bluetooth/DP_Bluetooth_22094/MediaTek/FORCED/10x64/7921_1.3.14.133_tequila/mtkbtfilter.inf
переменная inf_file3
содержит:
\\192.168.1.2\Fr-drivers\bluetooth\DP_Bluetooth_22094\MediaTek\FORCED\10x64\7921_1.3.14.133_tequila\mtkbtfilter.inf
В остальном скрипт я все понимаю(не все!). Я изучил его, чтобы понять его поведение. Единственное, что я не понимаю, это часть:
# Extract hardware IDs from INF file
hwids=$(grep -iE "^driverver|^pci|usb\\\\" "$inf_file" | awk -F ",|=" '{print $2}' | tr -d ' ' | sort -u)
А я думаю проблема в нем. Я понимаю, что это, якобы, извлекает Идентификаторы оборудования от каждого .inf
файл. Но когда я запускаю скрипт, он не извлекает Идентификаторы оборудования. И именно поэтому я изучил сценарий. Он извлекает, как правило, даты, как, например, (результат запуска скрипта в течение некоторого времени):
root@freebnt:/home/borhacker# ./indexdrivers-edit.sh
Inserting 07/10/2016 for \\192.168.1.2\Fr-drivers\video\DP_Video_nVIDIA-XP_22080\nVidia\FORCED\5x86\368.81\nvmmi.inf into database...
mysql: [Warning] Using a password on the command line interface can be insecure.
Inserting 07/10/2016 for \\192.168.1.2\Fr-drivers\video\DP_Video_nVIDIA-XP_22080\nVidia\FORCED\5x86\368.81\nvbli.inf into database...
mysql: [Warning] Using a password on the command line interface can be insecure.
Inserting 07/10/2016 for \\192.168.1.2\Fr-drivers\video\DP_Video_nVIDIA-XP_22080\nVidia\FORCED\5x86\368.81\nvlei.inf into database...
mysql: [Warning] Using a password on the command line interface can be insecure.
Inserting 07/10/2016 for \\192.168.1.2\Fr-drivers\video\DP_Video_nVIDIA-XP_22080\nVidia\FORCED\5x86\368.81\nvami.inf into database...
mysql: [Warning] Using a password on the command line interface can be insecure.
Теперь я хотел бы, чтобы кто-нибудь мог указать мне правильное направление, чтобы создать правильный сценарий, который будет генерировать MySQL база данных. Я не очень хорошо знаю эти инструменты Linux для обработки текста, а также содержимое инф. файлы.