@ECHO OFF SET IP=192.168.1.132 SET BAT=0 IF "%~1" NEQ "" ( SET IP=%1 SET BAT=1 ) SET CURDIR=%~dp0 SET CURDIR=%CURDIR:~0,-1% SET DEVDIR=/root SET PSCP=%CURDIR%\tools\pscp SET PLINK=%CURDIR%\tools\plink SET USR=root SET FBAT=%CURDIR%\tools\script.sh SET PWD=gowone123 SET FILE=PDUInfo.txt SET CSVFILE=device_info.csv ::test ip ECHO ping %IP% ... PING -n 3 -w 500 %IP% > NUL IF %ERRORLEVEL% NEQ 0 ( IF %BAT% EQU 0 ( ECHO %IP% can't reached! ) EXIT /B 1 ) ::获取设备MAC地址 for /f "tokens=*" %%a in ('%PLINK% -batch -ssh %USR%@%IP% -pw %PWD% "cat /sys/class/net/eth0/address"') do set mac=%%a ::MAC地址转换为大写 call set "mac_upper=%%mac:a=A%%" call set "mac_upper=%%mac_upper:b=B%%" call set "mac_upper=%%mac_upper:c=C%%" call set "mac_upper=%%mac_upper:d=D%%" call set "mac_upper=%%mac_upper:e=E%%" call set "mac_upper=%%mac_upper:f=F%%" ECHO MAC Address: %mac_upper% :: 遍历device_info.csv文件查找匹配的行 set model=null set serial_number=null :: 检查device_info.csv文件是否存在 if not exist "%CSVFILE%" ( echo Error: File %CSVFILE% not found! pause exit /b 1 ) for /f "tokens=1,2,3,4 delims=," %%a in (%CSVFILE%) do ( if %%d==%mac_upper% ( set model=%%b set serial_number=%%c ) ) :: 输出结果 echo PN: %model% echo SN: %serial_number% if not %model% == null ( ECHO Successfully found device information matching the MAC address in file %CSVFILE%. ) else ( ECHO No matching MAC address found in file %CSVFILE%. pause EXIT /B 2 ) set "temp_file=%CURDIR%\PDUInfo_temp.txt" :: 处理文件 ( for /f "usebackq tokens=1* delims=:" %%a in ("%FILE%") do ( if %%a=="product_sn" ( echo "product_sn": "%model%" ) else if %%a=="device_no" ( echo "device_no": "%serial_number%" ) else ( echo %%a: %%b ) ) ) > "%temp_file%" :: 替换原文件 move /y "%temp_file%" "%FILE%" >nul ECHO Successfully written the product information to the configuration file %FILE%. ::send files ECHO send %FILE% to device ... ECHO y | %PSCP% -pw %PWD% %FILE% %USR%@%IP%:%DEVDIR% IF %ERRORLEVEL% NEQ 0 ( ECHO send failed! TIMEOUT /T 5 > NUL EXIT /B 3 ) ECHO send finished, release files now ... ECHO y | %PLINK% -ssh -t -pw %PWD% %USR%@%IP% -m %FBAT% IF %ERRORLEVEL% NEQ 0 ( ECHO upgrade failed! TIMEOUT /T 5 > NUL EXIT /B 4 ) IF %BAT% EQU 0 ( ECHO upgrade successfully! ECHO quit now ... TIMEOUT /T 5 > NUL ) EXIT /B 0