|
|
@@ -0,0 +1,117 @@
|
|
|
+@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
|