push_csv.bat 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. @ECHO OFF
  2. SET IP=192.168.1.132
  3. SET BAT=0
  4. IF "%~1" NEQ "" (
  5. SET IP=%1
  6. SET BAT=1
  7. )
  8. SET CURDIR=%~dp0
  9. SET CURDIR=%CURDIR:~0,-1%
  10. SET DEVDIR=/root
  11. SET PSCP=%CURDIR%\tools\pscp
  12. SET PLINK=%CURDIR%\tools\plink
  13. SET USR=root
  14. SET FBAT=%CURDIR%\tools\script.sh
  15. SET PWD=gowone123
  16. SET FILE=PDUInfo.txt
  17. SET CSVFILE=device_info.csv
  18. ::test ip
  19. ECHO ping %IP% ...
  20. PING -n 3 -w 500 %IP% > NUL
  21. IF %ERRORLEVEL% NEQ 0 (
  22. IF %BAT% EQU 0 (
  23. ECHO %IP% can't reached!
  24. )
  25. EXIT /B 1
  26. )
  27. ::获取设备MAC地址
  28. for /f "tokens=*" %%a in ('%PLINK% -batch -ssh %USR%@%IP% -pw %PWD% "cat /sys/class/net/eth0/address"') do set mac=%%a
  29. ::MAC地址转换为大写
  30. call set "mac_upper=%%mac:a=A%%"
  31. call set "mac_upper=%%mac_upper:b=B%%"
  32. call set "mac_upper=%%mac_upper:c=C%%"
  33. call set "mac_upper=%%mac_upper:d=D%%"
  34. call set "mac_upper=%%mac_upper:e=E%%"
  35. call set "mac_upper=%%mac_upper:f=F%%"
  36. ECHO MAC Address: %mac_upper%
  37. :: 遍历device_info.csv文件查找匹配的行
  38. set model=null
  39. set serial_number=null
  40. :: 检查device_info.csv文件是否存在
  41. if not exist "%CSVFILE%" (
  42. echo Error: File %CSVFILE% not found!
  43. pause
  44. exit /b 1
  45. )
  46. for /f "tokens=1,2,3,4 delims=," %%a in (%CSVFILE%) do (
  47. if %%d==%mac_upper% (
  48. set model=%%b
  49. set serial_number=%%c
  50. )
  51. )
  52. :: 输出结果
  53. echo PN: %model%
  54. echo SN: %serial_number%
  55. if not %model% == null (
  56. ECHO Successfully found device information matching the MAC address in file %CSVFILE%.
  57. ) else (
  58. ECHO No matching MAC address found in file %CSVFILE%.
  59. pause
  60. EXIT /B 2
  61. )
  62. set "temp_file=%CURDIR%\PDUInfo_temp.txt"
  63. :: 处理文件
  64. (
  65. for /f "usebackq tokens=1* delims=:" %%a in ("%FILE%") do (
  66. if %%a=="product_sn" (
  67. echo "product_sn": "%model%"
  68. ) else if %%a=="device_no" (
  69. echo "device_no": "%serial_number%"
  70. ) else (
  71. echo %%a: %%b
  72. )
  73. )
  74. ) > "%temp_file%"
  75. :: 替换原文件
  76. move /y "%temp_file%" "%FILE%" >nul
  77. ECHO Successfully written the product information to the configuration file %FILE%.
  78. ::send files
  79. ECHO send %FILE% to device ...
  80. ECHO y | %PSCP% -pw %PWD% %FILE% %USR%@%IP%:%DEVDIR%
  81. IF %ERRORLEVEL% NEQ 0 (
  82. ECHO send failed!
  83. TIMEOUT /T 5 > NUL
  84. EXIT /B 3
  85. )
  86. ECHO send finished, release files now ...
  87. ECHO y | %PLINK% -ssh -t -pw %PWD% %USR%@%IP% -m %FBAT%
  88. IF %ERRORLEVEL% NEQ 0 (
  89. ECHO upgrade failed!
  90. TIMEOUT /T 5 > NUL
  91. EXIT /B 4
  92. )
  93. IF %BAT% EQU 0 (
  94. ECHO upgrade successfully!
  95. ECHO quit now ...
  96. TIMEOUT /T 5 > NUL
  97. )
  98. EXIT /B 0