zebra-day 1.0.2__py3-none-any.whl → 2.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. zebra_day/cli/gui.py +89 -6
  2. zebra_day/etc/printer_config.json +2 -14
  3. zebra_day/etc/printer_config.template.json +17 -9
  4. zebra_day/etc/tmp_printers120.json +10 -0
  5. zebra_day/etc/tmp_printers145.json +10 -0
  6. zebra_day/etc/tmp_printers207.json +10 -0
  7. zebra_day/etc/tmp_printers469.json +10 -0
  8. zebra_day/etc/tmp_printers485.json +10 -0
  9. zebra_day/etc/tmp_printers531.json +10 -0
  10. zebra_day/etc/tmp_printers540.json +10 -0
  11. zebra_day/etc/tmp_printers542.json +10 -0
  12. zebra_day/etc/tmp_printers552.json +10 -0
  13. zebra_day/etc/tmp_printers715.json +10 -0
  14. zebra_day/etc/tmp_printers972.json +10 -0
  15. zebra_day/files/blank_preview.png +0 -0
  16. zebra_day/files/corners_20cmX30cm_preview.png +0 -0
  17. zebra_day/files/generic_2inX1in_preview.png +0 -0
  18. zebra_day/files/test_png_12020.png +0 -0
  19. zebra_day/files/test_png_12352.png +0 -0
  20. zebra_day/files/test_png_15472.png +0 -0
  21. zebra_day/files/test_png_24493.png +0 -0
  22. zebra_day/files/test_png_30069.png +0 -0
  23. zebra_day/files/test_png_47791.png +0 -0
  24. zebra_day/files/test_png_47799.png +0 -0
  25. zebra_day/files/test_png_55588.png +0 -0
  26. zebra_day/files/test_png_58809.png +0 -0
  27. zebra_day/files/test_png_67242.png +0 -0
  28. zebra_day/files/test_png_89893.png +0 -0
  29. zebra_day/files/tube_20mmX30mmA_preview.png +0 -0
  30. zebra_day/print_mgr.py +136 -80
  31. zebra_day/templates/modern/config_backups.html +59 -0
  32. zebra_day/templates/modern/config_editor.html +95 -0
  33. zebra_day/templates/modern/config_new.html +93 -0
  34. zebra_day/templates/modern/print_request.html +9 -5
  35. zebra_day/templates/modern/printer_detail.html +161 -34
  36. zebra_day/templates/modern/printers.html +17 -6
  37. zebra_day/templates/modern/template_editor.html +7 -4
  38. zebra_day/web/app.py +84 -7
  39. zebra_day/web/routers/api.py +155 -5
  40. zebra_day/web/routers/ui.py +155 -570
  41. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/METADATA +74 -13
  42. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/RECORD +46 -57
  43. zebra_day/bin/fetch_zebra_config.py +0 -15
  44. zebra_day/bin/generate_coord_grid_zpl.py +0 -50
  45. zebra_day/bin/print_zpl_from_file.py +0 -21
  46. zebra_day/bin/probe_new_label_dimensions.py +0 -75
  47. zebra_day/bin/scan_for_networed_zebra_printers.py +0 -23
  48. zebra_day/bin/scan_for_networed_zebra_printers_arp_scan.sh +0 -1
  49. zebra_day/bin/scan_for_networed_zebra_printers_curl.sh +0 -30
  50. zebra_day/bin/zserve.py +0 -1062
  51. zebra_day/templates/base.html +0 -36
  52. zebra_day/templates/bpr.html +0 -72
  53. zebra_day/templates/build_new_config.html +0 -36
  54. zebra_day/templates/build_print_request.html +0 -32
  55. zebra_day/templates/chg_ui_style.html +0 -19
  56. zebra_day/templates/edit_template.html +0 -128
  57. zebra_day/templates/edit_zpl.html +0 -37
  58. zebra_day/templates/index.html +0 -82
  59. zebra_day/templates/legacy/base.html +0 -37
  60. zebra_day/templates/legacy/bpr.html +0 -72
  61. zebra_day/templates/legacy/build_new_config.html +0 -36
  62. zebra_day/templates/legacy/build_print_request.html +0 -32
  63. zebra_day/templates/legacy/chg_ui_style.html +0 -19
  64. zebra_day/templates/legacy/edit_template.html +0 -128
  65. zebra_day/templates/legacy/edit_zpl.html +0 -37
  66. zebra_day/templates/legacy/index.html +0 -82
  67. zebra_day/templates/legacy/list_prior_configs.html +0 -24
  68. zebra_day/templates/legacy/print_result.html +0 -30
  69. zebra_day/templates/legacy/printer_details.html +0 -25
  70. zebra_day/templates/legacy/printer_status.html +0 -70
  71. zebra_day/templates/legacy/save_result.html +0 -17
  72. zebra_day/templates/legacy/send_print_request.html +0 -34
  73. zebra_day/templates/legacy/simple_print.html +0 -94
  74. zebra_day/templates/legacy/view_pstation_json.html +0 -29
  75. zebra_day/templates/list_prior_configs.html +0 -24
  76. zebra_day/templates/print_result.html +0 -30
  77. zebra_day/templates/printer_details.html +0 -25
  78. zebra_day/templates/printer_status.html +0 -70
  79. zebra_day/templates/save_result.html +0 -17
  80. zebra_day/templates/send_print_request.html +0 -34
  81. zebra_day/templates/simple_print.html +0 -94
  82. zebra_day/templates/view_pstation_json.html +0 -29
  83. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/WHEEL +0 -0
  84. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/entry_points.txt +0 -0
  85. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/licenses/LICENSE +0 -0
  86. {zebra_day-1.0.2.dist-info → zebra_day-2.0.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zebra_day
3
- Version: 1.0.2
3
+ Version: 2.0.0
4
4
  Summary: A Python library to manage a Zebra printer fleet and an API for ZPL print requests.
5
5
  Home-page: https://github.com/Daylily-Informatics/zebra_day
6
6
  Author: John Major
@@ -60,7 +60,7 @@ Dynamic: license-file
60
60
 
61
61
  <img src=zebra_day/imgs/bar_red.png>
62
62
 
63
- ## zebra_day Overview [1.0.2](https://github.com/Daylily-Informatics/zebra_day/releases/tag/1.0.2)
63
+ ## zebra_day Overview [2.0.0](https://github.com/Daylily-Informatics/zebra_day/releases/tag/2.0.0)
64
64
 
65
65
  ### Build, Deploy, Run, Monitor, Teardown
66
66
 
@@ -86,13 +86,13 @@ zday gui start # Start web UI in background
86
86
  zday gui stop # Stop web UI
87
87
  zday gui status # Check if web UI is running
88
88
 
89
- # Health Checks
90
- curl http://localhost:8118/healthz # Basic health check
91
- curl http://localhost:8118/readyz # Readiness check (printer mgr initialized)
89
+ # Health Checks (use https:// if certificates are configured, http:// otherwise)
90
+ curl https://localhost:8118/healthz # Basic health check
91
+ curl https://localhost:8118/readyz # Readiness check (printer mgr initialized)
92
92
 
93
93
  # API Documentation
94
- # Visit http://localhost:8118/docs for interactive OpenAPI docs
95
- # Visit http://localhost:8118/redoc for alternative API documentation
94
+ # Visit https://localhost:8118/docs for interactive OpenAPI docs
95
+ # Visit https://localhost:8118/redoc for alternative API documentation
96
96
  ```
97
97
 
98
98
  <ul>
@@ -181,7 +181,7 @@ zday status # Show printer fleet status, service health
181
181
  zday bootstrap # First-time setup: scan network, initialize config
182
182
 
183
183
  # GUI server management
184
- zday gui start [--auth none|cognito] [--host HOST] [--port PORT]
184
+ zday gui start [--auth none|cognito] [--host HOST] [--port PORT] [--cert FILE] [--key FILE] [--no-https]
185
185
  zday gui stop
186
186
  zday gui status
187
187
  zday gui logs [--tail N] [--follow]
@@ -213,6 +213,64 @@ The old commands `zday_start` and `zday_quickstart` still work but are deprecate
213
213
  | `zday_start` | `zday gui start` |
214
214
  | `zday_start --auth cognito` | `zday gui start --auth cognito` |
215
215
 
216
+ ### Local HTTPS Setup
217
+
218
+ The zebra_day web UI supports HTTPS for secure local development. By default, HTTPS is enabled if certificates are found.
219
+
220
+ #### One-Time Setup (mkcert)
221
+
222
+ ```bash
223
+ # Install mkcert
224
+ # macOS
225
+ brew install mkcert
226
+
227
+ # Ubuntu/Debian
228
+ sudo apt install mkcert
229
+
230
+ # Create and install local CA (one-time, requires password)
231
+ mkcert -install
232
+ ```
233
+
234
+ #### Generate Certificates for zebra_day
235
+
236
+ ```bash
237
+ # Create certificate directory
238
+ mkdir -p ~/.config/zebra_day/certs
239
+
240
+ # Generate locally-trusted certificates
241
+ mkcert -cert-file ~/.config/zebra_day/certs/server.crt \
242
+ -key-file ~/.config/zebra_day/certs/server.key \
243
+ localhost 127.0.0.1 ::1
244
+ ```
245
+
246
+ #### HTTPS Options
247
+
248
+ | Method | Description |
249
+ |--------|-------------|
250
+ | **Auto-detect** | If certs exist in `~/.config/zebra_day/certs/`, HTTPS is enabled automatically |
251
+ | **Explicit paths** | `zday gui start --cert /path/to/cert.crt --key /path/to/key.key` |
252
+ | **Environment vars** | Set `SSL_CERT_PATH` and `SSL_KEY_PATH` |
253
+ | **Force HTTP** | `zday gui start --no-https` |
254
+
255
+ #### Verify HTTPS
256
+
257
+ ```bash
258
+ # Start server (will use HTTPS if certs are found)
259
+ zday gui start
260
+
261
+ # Test connection
262
+ curl https://localhost:8118/healthz
263
+ ```
264
+
265
+ #### Troubleshooting
266
+
267
+ | Issue | Solution |
268
+ |-------|----------|
269
+ | Browser shows "Not Secure" | Run `mkcert -install` to trust the local CA |
270
+ | Certificate not found | Check paths: `ls ~/.config/zebra_day/certs/` |
271
+ | Permission denied | Ensure cert files are readable: `chmod 644 ~/.config/zebra_day/certs/*` |
272
+ | Want HTTP only | Use `--no-https` flag: `zday gui start --no-https` |
273
+
216
274
  ### It Is 3+ Things
217
275
 
218
276
  (1) Zebra Printer Management & Configuration
@@ -502,10 +560,12 @@ zebra_day 0.6.0+ includes a redesigned modern UI alongside the preserved legacy
502
560
 
503
561
  | Interface | URL | Description |
504
562
  |-----------|-----|-------------|
505
- | **Modern UI** | `http://localhost:8118/` | New dashboard with stats, quick actions, improved navigation |
506
- | **Legacy UI** | `http://localhost:8118/legacy` | Original interface, fully functional |
507
- | **API Docs** | `http://localhost:8118/docs` | Interactive OpenAPI/Swagger documentation |
508
- | **ReDoc** | `http://localhost:8118/redoc` | Alternative API documentation |
563
+ | **Modern UI** | `https://localhost:8118/` | New dashboard with stats, quick actions, improved navigation |
564
+ | **Legacy UI** | `https://localhost:8118/legacy` | Original interface, fully functional |
565
+ | **API Docs** | `https://localhost:8118/docs` | Interactive OpenAPI/Swagger documentation |
566
+ | **ReDoc** | `https://localhost:8118/redoc` | Alternative API documentation |
567
+
568
+ > **Note:** Use `http://` instead of `https://` if running without certificates (`--no-https`).
509
569
 
510
570
  Both interfaces provide full functionality. The modern UI offers:
511
571
  - Dashboard with printer fleet statistics
@@ -579,7 +639,7 @@ When `--auth cognito` is enabled:
579
639
 
580
640
  Include the JWT token in the Authorization header:
581
641
  ```bash
582
- curl -H "Authorization: Bearer YOUR_JWT_TOKEN" http://localhost:8118/api/v1/printers
642
+ curl -H "Authorization: Bearer YOUR_JWT_TOKEN" https://localhost:8118/api/v1/printers
583
643
  ```
584
644
 
585
645
  ### Secrets
@@ -784,3 +844,4 @@ Tthen run `sudo docker compose up --build -d` to run it then reach it at http://
784
844
 
785
845
 
786
846
 
847
+
@@ -3,36 +3,39 @@ zebra_day/cmd_mgr.py,sha256=RUGPT_WXvjq4XiFKFBOw2Oi1hFL1Mp78hUMKAFTgqS8,1116
3
3
  zebra_day/exceptions.py,sha256=cDSsTFRekK1axkaCbzmHPYLY0MDxvenfv2K7mjKQMYw,2620
4
4
  zebra_day/logging_config.py,sha256=y8_lMmFXYlCUxTAk6cHKjoS3qa0T673EOk5TmBDpw8o,2002
5
5
  zebra_day/paths.py,sha256=Fm2xQbVLsmlJu95J84pyEL7PHakLW2FJjLa9NPov29Y,4460
6
- zebra_day/print_mgr.py,sha256=TOYSqVQltYvNM-Z5RYqzXr9OWYnzi-r8tDcTzxg-eOU,21820
6
+ zebra_day/print_mgr.py,sha256=Exk1OQAxrn1K60XYNxhyWlZjzNlZTrHqu3n0hADeIFg,24757
7
7
  zebra_day/zpl_renderer.py,sha256=vqcLd0CrgastHfpZ8btazFXV3lhDVaHDfZPhTQuCncw,8549
8
8
  zebra_day/bin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- zebra_day/bin/fetch_zebra_config.py,sha256=-GANSqifEi6kWthfBKvOtMV-Ar5ZX63NmOLiKxf_0Cw,488
10
- zebra_day/bin/generate_coord_grid_zpl.py,sha256=tWKDmw7bT13mAYdnEY81Coo0SLVLwrI3l2XA7gBy_Hw,1782
11
- zebra_day/bin/print_zpl_from_file.py,sha256=-MXA_OLNn5NXD3U9f75NwKVLYcdsBw09aewkZ8uHxos,265
12
- zebra_day/bin/probe_new_label_dimensions.py,sha256=JFpfylyxKUpX0bQgs2dMRjbuIGfJb5hd4GEbOT8uYeE,2286
13
- zebra_day/bin/scan_for_networed_zebra_printers.py,sha256=chzUhIxHvOWoN3aBih2FNa7G0uCwcVKkGgcZUe5XJUQ,592
14
- zebra_day/bin/scan_for_networed_zebra_printers_arp_scan.sh,sha256=XMV7Wc3XF3cd8gkqdFTeH9mzaQ2rc2kZyOVI_VFmDoI,25
15
- zebra_day/bin/scan_for_networed_zebra_printers_curl.sh,sha256=BP_4dOk0Ra42MJsdfnAEOos78Dqx0Ua8Tt5OwG2nAII,865
16
- zebra_day/bin/zserve.py,sha256=JkBowNGbyDyiRHM6fF_kN-lQ2Ry--GoD8_m58CHkGkQ,45692
17
9
  zebra_day/cli/__init__.py,sha256=z1IZqgb3PlJTOrPsYbyUpNN-7Kj4cjbTLo-SzrBhAFs,8578
18
10
  zebra_day/cli/cognito.py,sha256=ObVBDcIeKJmxCa8MbHBp3obyF2aZVnZ15oW7bUkYV14,4730
19
- zebra_day/cli/gui.py,sha256=ehfwNxbCILUX7SNXDl1UZVfvI_y6Jod2H-XJSdSscQE,8750
11
+ zebra_day/cli/gui.py,sha256=5cPpTdtNsw4qnshPmY_aZOEVV1SNNX4XR9K6Umc0PvU,11806
20
12
  zebra_day/cli/printer.py,sha256=_LiMrUDTCZggObeQr2dAPgGgQ3vAhAPoAfThr0pNIQs,5978
21
13
  zebra_day/cli/template.py,sha256=6O-VIkuc0lQJUrOr9-6q7hp-LmvLSlAaKcmdfvQ9_7o,5570
22
14
  zebra_day/etc/Monoid-Regular-HalfTight-Dollar-0-1-l.ttf,sha256=RFG3q_GHoEFsEaJb-PIayWRgy_RuFeC0ABkjcSBXT7c,79748
23
- zebra_day/etc/printer_config.json,sha256=UymTbo-NVonzuMM5LOqT0Zh54h7gTgxm0NQZL-kHK5k,385
24
- zebra_day/etc/printer_config.template.json,sha256=1d-lO098dbNQVJWZM_29T9Dp9h7sxIC5UhmLynAeRE4,372
15
+ zebra_day/etc/printer_config.json,sha256=esoeYABERhciVc0fjkCZMapG8Dcu1YXnPjm8Qp802io,49
16
+ zebra_day/etc/printer_config.template.json,sha256=Ji0WbzonQ8yIiKFldPRvd7AmCp-MvIDLq_LhdrXu5Sc,772
25
17
  zebra_day/etc/tmp_printers0.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
18
+ zebra_day/etc/tmp_printers120.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
19
+ zebra_day/etc/tmp_printers145.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
20
+ zebra_day/etc/tmp_printers207.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
26
21
  zebra_day/etc/tmp_printers374.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
27
22
  zebra_day/etc/tmp_printers383.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
28
23
  zebra_day/etc/tmp_printers450.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
24
+ zebra_day/etc/tmp_printers469.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
25
+ zebra_day/etc/tmp_printers485.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
29
26
  zebra_day/etc/tmp_printers504.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
27
+ zebra_day/etc/tmp_printers531.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
28
+ zebra_day/etc/tmp_printers540.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
29
+ zebra_day/etc/tmp_printers542.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
30
+ zebra_day/etc/tmp_printers552.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
30
31
  zebra_day/etc/tmp_printers608.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
31
32
  zebra_day/etc/tmp_printers657.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
33
+ zebra_day/etc/tmp_printers715.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
32
34
  zebra_day/etc/tmp_printers838.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
33
35
  zebra_day/etc/tmp_printers839.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
34
36
  zebra_day/etc/tmp_printers933.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
35
37
  zebra_day/etc/tmp_printers957.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
38
+ zebra_day/etc/tmp_printers972.json,sha256=0RA7EB5tcWd0WS8P9-j73lx2yBJ2XD1fbaKUrQ2pdAk,184
36
39
  zebra_day/etc/label_styles/blank.zpl,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
40
  zebra_day/etc/label_styles/cornersStripOf4Squares_1inX1in.zpl,sha256=rFFCw44WeZ6RKE6zZ8uPnWtiTh7mr-RVzFwrpc4oHzE,552
38
41
  zebra_day/etc/label_styles/corners_1inX2in.zpl,sha256=wDogpF1tYILinH7xkB3KCZZHfAw3Reyq5fdc3lT8qOs,742
@@ -89,20 +92,35 @@ zebra_day/etc/old_printer_config/2026-02-01_01:51:29.789287_printer_config.json,
89
92
  zebra_day/etc/old_printer_config/2026-02-01_01:51:29.794230_printer_config.json,sha256=eKsn7N7Gte4GQqWFGfF4pOMPwnYNMLDWe0O6v9rKX-o,18
90
93
  zebra_day/etc/old_printer_config/2026-02-01_01:51:29.800021_printer_config.json,sha256=U_Gp8UIWg9CCnXgyFO6w91qQbGhOMRuOY0-Sh10_Jcc,42
91
94
  zebra_day/files/.hold,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ zebra_day/files/blank_preview.png,sha256=_Y5D_c0Mk9_mG7ByCkTzGgNd1s8a2mXnV4MtBi45p-8,5568
96
+ zebra_day/files/corners_20cmX30cm_preview.png,sha256=nGStD58y0DaR_A2OjHzqJmO4PY4tBWGcVcnqx7MedCw,7339
97
+ zebra_day/files/generic_2inX1in_preview.png,sha256=cWTKPcIhMHTtBpTPWOPYxBeffHTOujgMxrOLM2FHULU,15817
92
98
  zebra_day/files/hold,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
+ zebra_day/files/test_png_12020.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
100
+ zebra_day/files/test_png_12352.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
101
+ zebra_day/files/test_png_15472.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
93
102
  zebra_day/files/test_png_17696.png,sha256=Ue971C0RDpNMN1cUNSOfY4AUXAC4EVKlJadi0ZsPmiU,11579
94
103
  zebra_day/files/test_png_23477.png,sha256=reHzpFJuxFTmZ6vW0Xvk5RxF0sM-ECh2BeFQus_rPJw,11579
104
+ zebra_day/files/test_png_24493.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
95
105
  zebra_day/files/test_png_28157.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
106
+ zebra_day/files/test_png_30069.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
96
107
  zebra_day/files/test_png_35832.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
97
108
  zebra_day/files/test_png_36400.png,sha256=bM1pgOP5tMhw-bzJcBBk8v8JctSUYlZb70UCtdjBUSo,11579
98
109
  zebra_day/files/test_png_40816.png,sha256=C-Zt6O2ZgvaDK73BodUt_HBLWCt1Y3HRx6WQcIwDaIw,9216
110
+ zebra_day/files/test_png_47791.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
111
+ zebra_day/files/test_png_47799.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
99
112
  zebra_day/files/test_png_49564.png,sha256=LwB_2v07NGduKrrUIrjSZ7kBFEzREEJNHXcQDN19uKg,11579
100
113
  zebra_day/files/test_png_53848.png,sha256=x7aEWDY6GlvVG6s_gfi54jmJqtpAB3HEXQpE6B0WWkM,11579
114
+ zebra_day/files/test_png_55588.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
115
+ zebra_day/files/test_png_58809.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
101
116
  zebra_day/files/test_png_62542.png,sha256=C-Zt6O2ZgvaDK73BodUt_HBLWCt1Y3HRx6WQcIwDaIw,9216
117
+ zebra_day/files/test_png_67242.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
118
+ zebra_day/files/test_png_89893.png,sha256=BZkB4S_6t9xq2S9y9-kfer6U5tch0jxXAiOFjlbKShg,8495
102
119
  zebra_day/files/test_png_91597.png,sha256=3YPDRfhsTKmoIY90kLq-jVZZW4osLuAIdbmdxFCLtjw,11579
103
120
  zebra_day/files/test_png_93633.png,sha256=C-Zt6O2ZgvaDK73BodUt_HBLWCt1Y3HRx6WQcIwDaIw,9216
104
121
  zebra_day/files/tmpbjo3k7q1.png,sha256=fReIel3YmlwpYXph6C3zP9iox1_CSNIrHVpyGuW0kIg,8099
105
122
  zebra_day/files/tmpigtr4pwy.png,sha256=0oBo7ClURIaDaF9bk5w72ChB38J3epa0dofHIoSixI4,8670
123
+ zebra_day/files/tube_20mmX30mmA_preview.png,sha256=XIdOZL7rmGLs7sArF9hu6L5JD-oQoiI-vY_ImQ_QlMI,21295
106
124
  zebra_day/files/zpl_label_tube_2inX1in_2026-02-01_01:51:24.370964.png,sha256=reHzpFJuxFTmZ6vW0Xvk5RxF0sM-ECh2BeFQus_rPJw,11579
107
125
  zebra_day/logs/.hold,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
126
  zebra_day/logs/print_requests.log,sha256=pyGPUSt3N-POZG3dz4Xax9qronlW1bjV_-HK30uV3Ds,71
@@ -122,58 +140,29 @@ zebra_day/static/tron.css,sha256=EodvGGALe0ePUeSaYPZU8zPP84b_onGIwI3zgaeTg_U,857
122
140
  zebra_day/static/zebra_modern.css,sha256=I1OM-UOpgXBE46g3qQ9SiZyc8uX6q15VMKaFmf_jApw,16625
123
141
  zebra_day/static/zebras.css,sha256=I5k4_s8qg2qPtwxVX_R-KUWIED1nNkTWz2xzdDuwX-o,3600
124
142
  zebra_day/static/js/zebra_modern.js,sha256=_zmr0CmIe7p3giYtZjV7r4G-z9s10gF6x9dWEBvQgGs,4564
125
- zebra_day/templates/base.html,sha256=8rwsEZwRz-YYzacxdR4DyboKG-yy_kZuaS59nvXYGrw,1190
126
- zebra_day/templates/bpr.html,sha256=obzVAs8G0zgP-b8jtUsa_T_okzsOw_jE_20tpHvrM9k,2370
127
- zebra_day/templates/build_new_config.html,sha256=k1akbdDsKD3Mqsl-0NDdSBpsy6RBSSw3G05qquAHM3I,1154
128
- zebra_day/templates/build_print_request.html,sha256=_WxVoO8EGQAZDThUVvAjq6mnwWJ5zh4NOH6gK7Et1Es,1328
129
- zebra_day/templates/chg_ui_style.html,sha256=xNC_iqAUiELbgoadEbZ4bBEYPYfMnc5LpzGRKMH0tjQ,415
130
- zebra_day/templates/edit_template.html,sha256=XJ2yd3-6MQ4Fke5d3oXwMjXb0y9hlwkeejdwWHfWUnU,4399
131
- zebra_day/templates/edit_zpl.html,sha256=XNso1Wl5xGizTMXG5Wohqc_b1JzGHKcz-5as5J0jjWs,972
132
- zebra_day/templates/index.html,sha256=8TJLUqSBfd5IkITIP5vZcinLihIEt8PVxDbGQp_-7A0,2598
133
- zebra_day/templates/list_prior_configs.html,sha256=maZegE5SD3ghdlAXZjXVtKYxURvzh6ajDYCOmd6rrAg,715
134
- zebra_day/templates/print_result.html,sha256=nQy87xhy3M74DBYQ6rfzayueb79XnnYt5v_7nhdOGIs,676
135
- zebra_day/templates/printer_details.html,sha256=lCLyUpUTJNmQUnBnR6Tl8xeAuDCXTKYsIUfxw8-jvWY,624
136
- zebra_day/templates/printer_status.html,sha256=RBUq7xcyrIACpUrHM1WcAqHd5CgBc29n3gjEsg6AWlI,2683
137
- zebra_day/templates/save_result.html,sha256=6y4U8khbNLisHHddcr39hP0XBOfwDVQRJM7nbVa1U6g,359
138
- zebra_day/templates/send_print_request.html,sha256=gB2QvTPQ2PFt7YnsD_rzgVmqh8wEdl4U7OQBqpC-Rm8,917
139
- zebra_day/templates/simple_print.html,sha256=pC78nu_Etq09XPmaDozsiqkmPRZHeuJHZJCtfJn9cd8,2956
140
- zebra_day/templates/view_pstation_json.html,sha256=8jy6bF85dO8TBrl4TedDG2Q_v3z33grqiB-CuTNM4Js,894
141
- zebra_day/templates/legacy/base.html,sha256=DZiybJ0sI7aLHocfO1g9P9P4U0OLCkGXQ7AFzl_y4YE,1272
142
- zebra_day/templates/legacy/bpr.html,sha256=SUXWG3ScjLiYxFnUbR2Xky-nRFeh6qJZ_lCLmr-Ouls,2390
143
- zebra_day/templates/legacy/build_new_config.html,sha256=0E9pJ8mXbC9mLQ4D_nqTUZ8aHMFsX_BwvNh2g93Jvi8,1180
144
- zebra_day/templates/legacy/build_print_request.html,sha256=UcyfXWLOs4RlcqDLuZX09izoMFCFRqfnfQtC0Rtt9P8,1348
145
- zebra_day/templates/legacy/chg_ui_style.html,sha256=BeBB0rVUTn4a2qXF6WFhxFNwC2O-bV9zJDWGC-8DTC4,431
146
- zebra_day/templates/legacy/edit_template.html,sha256=Qw6w-BIitGj7JdNCVvXY3gGwgRewY__fhgx1fnRO3Vo,4437
147
- zebra_day/templates/legacy/edit_zpl.html,sha256=ZFfaN8icmaBW1HY-vAeRlNfG0y6vMkaLKS8mnrpEeMc,979
148
- zebra_day/templates/legacy/index.html,sha256=j3ysh4m-I33xSeeQ5bVfvgdZxT3OOPS5JSeIrvXnUK8,2642
149
- zebra_day/templates/legacy/list_prior_configs.html,sha256=82QH6o4uyK7BYfkRznpiXuP9dUI3PzhyIfZ7mVJ_Ixs,733
150
- zebra_day/templates/legacy/print_result.html,sha256=OaleUNEneUTsb06HTr-08UkT0fr6uGaSG9xmAjhwKvU,695
151
- zebra_day/templates/legacy/printer_details.html,sha256=HiOZm-KodNf6HcI9hG0DfXygI5SfLLhbKYJbIUZOxvk,644
152
- zebra_day/templates/legacy/printer_status.html,sha256=wRKG4XvZ11TVtk00v_NQHt1kZpRojgR2y78CPU5dCcc,2731
153
- zebra_day/templates/legacy/save_result.html,sha256=-_p6WojIJ1fLpOsN7BtJSQlnT5D9yiPWOKqaDBphjoQ,385
154
- zebra_day/templates/legacy/send_print_request.html,sha256=cxcywQMIROtxDZ6V2kXbbL6ayJnHgCWtdyvTYTL2-M4,937
155
- zebra_day/templates/legacy/simple_print.html,sha256=2y1O0lC-e_5JBHQitn0p8bPATO1uPsCksyL9Y71ieOU,2972
156
- zebra_day/templates/legacy/view_pstation_json.html,sha256=bAMGGZ3DK1hVf3tvF8StTYq4gBMcuDX3PGhEsysiFQA,935
157
143
  zebra_day/templates/modern/base.html,sha256=ONpd_ZkIV4nm0ooXvpr9uJu-JVzkiRwiGBedGoKjZjw,4552
158
144
  zebra_day/templates/modern/config.html,sha256=quO2vOVSydrQasBk2cBO_igap6B9kvGL34i4aJs9ND8,5167
145
+ zebra_day/templates/modern/config_backups.html,sha256=cCV7uAcUnOCq9fLXYiNJKEyGFDBb9J23XGgGEnuy7vM,1942
146
+ zebra_day/templates/modern/config_editor.html,sha256=KKsuLSOQWWKQHDL2f0jmFhTzWttOkMYjNO_Lh2fPiVo,2962
147
+ zebra_day/templates/modern/config_new.html,sha256=XM-kvmQgllJld7jjKUvWeXhx5gFQwUv47K1Hfz4H38g,3910
159
148
  zebra_day/templates/modern/dashboard.html,sha256=OEUjYTaXQfxyA4Qnq9yGsedS8MfNCly8sOCLuNGIgiM,5429
160
- zebra_day/templates/modern/print_request.html,sha256=ziIUHYmiH4irbCwxzrzsb0v_Kn5WAaaRmmzAcTI0ZxU,5952
149
+ zebra_day/templates/modern/print_request.html,sha256=XBx0FUWGPWyuyvdITuMfwmizTFWQmSOPKqdWn_AdGpI,6254
161
150
  zebra_day/templates/modern/print_result.html,sha256=U2yWG8jmkVAQj3Myzn94uS80-8FU3PXtnitw8jWNEW4,3237
162
- zebra_day/templates/modern/printer_detail.html,sha256=AzOuK8kJmntbH1qtekEr-IdGroY_tJEPmRSOIrH6L-c,4290
163
- zebra_day/templates/modern/printers.html,sha256=iINrh-KCIYzykUMslIJkbGKeq4DfO_GxdnxtVbCZebo,5091
151
+ zebra_day/templates/modern/printer_detail.html,sha256=SildrvsqLGINseya1ctoNw0XKfRRO3Jf0Qp4GrTb0pc,9989
152
+ zebra_day/templates/modern/printers.html,sha256=qwu8k02jsdjPJoIl3P4FEIdlal84GCVbDe1TjYJo1EI,5775
164
153
  zebra_day/templates/modern/save_result.html,sha256=ShxIVetqfiJnEdq43sSQWqSblIBp2eOH3p9KZPHglgg,1546
165
- zebra_day/templates/modern/template_editor.html,sha256=8t7f6A3l_JiBxUoDQ2sc8yKF-kC-CxVYKXoEIAz1QGo,6920
154
+ zebra_day/templates/modern/template_editor.html,sha256=DH3vtUuPMLyBwvzz-G9rc-odxDqVbDM9Uv9IY9VNK9M,7148
166
155
  zebra_day/templates/modern/templates.html,sha256=SJmJ4s4VKA7yWXrKQmAfvYWrKU2zvMtNEjIPgag6lcA,4635
167
156
  zebra_day/web/__init__.py,sha256=S1kvJdkPuHl5mBlRLTbFiFQ7-uc6PZ6dW_oqsy4d4tc,188
168
- zebra_day/web/app.py,sha256=ZodrbYikuRFUydTWKxAUZvhXdQyk8JaVPJy6GvMPzwk,5336
157
+ zebra_day/web/app.py,sha256=v_CSewdaZZp_5VytC9SfrKEegLJBRD2zTW_HvikP480,8193
169
158
  zebra_day/web/auth.py,sha256=hKkd2TzspFUnZtv6mmDVHTS2j3BBEjZuaZUQcqmD8PY,5858
170
159
  zebra_day/web/middleware.py,sha256=AFCi8C9ecbxwbjDYwIFZzz7etRZad1ORqOCzUTC-ml0,4884
171
160
  zebra_day/web/routers/__init__.py,sha256=xWVL9oJx4JU6_NkdNTDDvyTzgXWX173pvbCp1z15XSw,54
172
- zebra_day/web/routers/api.py,sha256=lVNLHTHVftjp-ErQXgffoJDtO34zvZBuDzFB0XkK3Ro,5133
173
- zebra_day/web/routers/ui.py,sha256=as-DBrzgVvxullHaC4PzgsWjiMO3LPpN7K3br-Mq4rs,32964
174
- zebra_day-1.0.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
175
- zebra_day-1.0.2.dist-info/METADATA,sha256=6jDmeOIMSk-PWsBMynUQVU1V2HCogsmuGxpveF0aWSQ,32327
176
- zebra_day-1.0.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
177
- zebra_day-1.0.2.dist-info/entry_points.txt,sha256=LuUjLGAjOu0R50tma6_4__Te5UScZMrARbkofSVLVYM,131
178
- zebra_day-1.0.2.dist-info/top_level.txt,sha256=YTHvTEmr_0Jdxstja9CpvzaFCBedOq8EhKnrhDg4Pm4,10
179
- zebra_day-1.0.2.dist-info/RECORD,,
161
+ zebra_day/web/routers/api.py,sha256=0eShyT1QDbLU1x7_5tUUGA4yDr1Xf7pJDCbCOAOpPJA,11777
162
+ zebra_day/web/routers/ui.py,sha256=M5TSGx7wo7EjvQ9YERKMmj_ouDQjEgnc11eEbrcY3j4,19766
163
+ zebra_day-2.0.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
164
+ zebra_day-2.0.0.dist-info/METADATA,sha256=syXuGh7kViNjsZMpfF_pg1vN0AzSaCb2MM93j5xYYcE,34111
165
+ zebra_day-2.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
166
+ zebra_day-2.0.0.dist-info/entry_points.txt,sha256=LuUjLGAjOu0R50tma6_4__Te5UScZMrARbkofSVLVYM,131
167
+ zebra_day-2.0.0.dist-info/top_level.txt,sha256=YTHvTEmr_0Jdxstja9CpvzaFCBedOq8EhKnrhDg4Pm4,10
168
+ zebra_day-2.0.0.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- import socket
2
- import sys
3
-
4
- def send_zpl_to_printer(ip_address, port, zpl_string):
5
- with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
6
- s.connect((ip_address, port))
7
- s.sendall(zpl_string.encode())
8
- response = s.recv(1024)
9
- return response.decode()
10
-
11
- # Example usage
12
- ip = sys.argv[1]
13
- zpl_command = '^XA^HH^XZ' # This command retrieves the printer's configuration. Replace as needed.
14
- response = send_zpl_to_printer(ip, 9100, zpl_command)
15
- print(response)
@@ -1,50 +0,0 @@
1
- import sys
2
- import zebra_day.print_mgr as zdpm
3
-
4
-
5
- def generate_coarse_grid(x_dim, y_dim):
6
- step = 50
7
- zpl_strings = []
8
- for x in range(0, x_dim, step):
9
- for y in range(0, y_dim, step):
10
- zpl_strings.append(f"^FO{x},{y}^A0N,18,18^FD{x}^FS^FO{x},{y+20}^A0N,18,18^FD{y}^FS")
11
- #zpl_strings.append(f"^FO{x},{y}^A0N,22,22^FD{x},{y}^FS")
12
- return "^XA" + "".join(zpl_strings) + "^XZ"
13
-
14
- def generate_fine_grid(top_left, bottom_right, step=20, expand=50):
15
- x_start = max(0, top_left[0] - expand)
16
- y_start = max(0, top_left[1] - expand)
17
- x_end = bottom_right[0] + expand
18
- y_end = bottom_right[1] + expand
19
- zpl_strings = []
20
- for x in range(x_start, x_end, step):
21
- for y in range(y_start, y_end, step):
22
- zpl_strings.append(f"^FO{x},{y}^A0N,20,20^FD{x},{y}^FS")
23
- return "^XA" + "".join(zpl_strings) + "^XZ"
24
-
25
- def main(ip):
26
-
27
- zpld = zdpm.zpl()
28
-
29
- # Part 1: Coarse Grid
30
- x_dim = int(input("Enter width of the rectangle in dots: "))
31
- y_dim = int(input("Enter height of the rectangle in dots: "))
32
- print("\nZPL for coarse grid:\n")
33
- zpl_string = generate_coarse_grid(x_dim, y_dim)
34
- print(zpl_string)
35
- zpld.print_raw_zpl(zpl_string , ip)
36
-
37
- fh = open('./test_800dX800dCoordinateArray.zpl','w')
38
- fh.write(zpl_string)
39
- fh.close()
40
-
41
- # Part 2: Fine Grid
42
- #top_left = tuple(map(int, input("\nEnter top-left corner coordinates (x,y) separated by a comma: ").split(',')))
43
- #bottom_right = tuple(map(int, input("Enter bottom-right corner coordinates (x,y) separated by a comma: ").split(',')))
44
- #print("\nZPL for fine grid:\n")
45
- #zpl_string2 = generate_fine_grid(top_left, bottom_right)
46
- #zpld.print_raw_zpl(zpl_string2 , ip)
47
-
48
- if __name__ == "__main__":
49
-
50
- main(sys.argv[1])
@@ -1,21 +0,0 @@
1
- import sys
2
- import zebra_day.print_mgr as zdpm
3
-
4
- ip = sys.argv[1]
5
-
6
- zpl_file = sys.argv[2]
7
-
8
- zpld = zdpm.zpl()
9
-
10
- zpl_string = ""
11
-
12
- fh = open(zpl_file, 'r')
13
- for i in fh:
14
- zpl_string += i.rstrip()
15
-
16
-
17
- print(zpl_string)
18
-
19
- zpld.print_raw_zpl(zpl_string , ip)
20
-
21
- print('done!')
@@ -1,75 +0,0 @@
1
- import sys
2
- import zebra_day.print_mgr as zdpm
3
-
4
- class ZPLBoundaryTester:
5
- def __init__(self):
6
- # Starting coordinates
7
- self.x = 235
8
- self.y = 20 ##235,20
9
-
10
- # Step size (how much we move the print position each time)
11
- # Adjust based on the printer's resolution (DPI) and desired granularity.
12
- self.step = 100
13
-
14
- # Flags
15
- self.first_print_x = True
16
- self.first_print_y = True
17
-
18
- self.first_x = None
19
- self.first_y = None
20
- self.first_last_x = None
21
- self.first_last_y = None
22
-
23
- def generate_zpl(self):
24
- #zpl_string = f"^XA^FO{self.x},{self.y}^ADN,30,20^FDXXX^FS^XZ"
25
- zpl_string = f"^XA^FO{self.x},{self.y}^BY1^B3N,N,40,N,N^FDX^FS^XZ"
26
- #zpl_string = f"^XA^FO{self.x},{self.y}^A0N,100,100^FDX^FS^XZ"
27
- return zpl_string
28
-
29
- def process_feedback(self, feedback):
30
- if feedback == "n": # not yet
31
- if not self.first_print_y:
32
- print("Testing completed.")
33
- return None
34
- self.y += self.step
35
- self.x += self.step
36
- self.first_print_x = True
37
- return self.generate_zpl()
38
-
39
- elif feedback == "b": # begins
40
- self.first_print_x = False
41
- self.x += self.step
42
- return self.generate_zpl()
43
-
44
- elif feedback == "c": # continuses
45
- self.x += self.step
46
- return self.generate_zpl()
47
-
48
- elif feedback == "o": # off
49
- if self.first_print_x:
50
- self.first_print_y = False
51
- else:
52
- self.y += self.step
53
- self.x = 0
54
- self.first_print_x = True
55
- return self.generate_zpl()
56
-
57
- else:
58
- print("Invalid feedback. Please provide a valid feedback string.")
59
- return None
60
-
61
- def main(ip='localhost'):
62
- tester = ZPLBoundaryTester()
63
- zpl_string = tester.generate_zpl()
64
-
65
- zpld = zdpm.zpl()
66
-
67
- while zpl_string:
68
- print(f"Send the following ZPL to the printer:\n{zpl_string}")
69
- feedback = input("Please provide your feedback: ")
70
- zpl_string = tester.process_feedback(feedback)
71
- zpld.print_raw_zpl(zpl_string , ip)
72
-
73
- if __name__ == "__main__":
74
- ip = sys.argv[1]
75
- main(ip)
@@ -1,23 +0,0 @@
1
- import subprocess
2
- import re
3
- import sys
4
-
5
- ip_root = sys.argv[1] # ie: 192.168.1.1
6
-
7
- # Command
8
- command = ["nmap", "-p", "80", "-sV", "-T4", "--max-retries", "0", "--host-timeout", "21s", "-A", f"{ip_root}/24"]
9
- output = subprocess.check_output(command).decode("utf-8")
10
-
11
- # Parse the output
12
- lines = output.split('\n')
13
- zebra_ips = []
14
-
15
- for i, line in enumerate(lines):
16
- if 'Nmap scan report for' in line:
17
- current_ip = re.search(r'for (\d+\.\d+\.\d+\.\d+)', line).group(1)
18
- if 'Zebra' in line:
19
- zebra_ips.append(current_ip)
20
-
21
- # Print the results
22
- for ip in zebra_ips:
23
- print(ip)
@@ -1 +0,0 @@
1
- sudo arp-scan --localnet
@@ -1,30 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Network range (modify if needed)
4
- network=$1 # "192.168.1"
5
- scan_wait=0.4
6
- if [[ "$2" == "" ]]; then
7
- scan_wait=0.4
8
- else
9
- scan_wait=$2
10
- fi
11
-
12
-
13
- # Loop through each IP and use curl
14
- for i in {1..254}; do
15
- ip="$network.$i"
16
- # Use curl to fetch the page and grep to check for "Zebra"
17
- echo $ip
18
- if curl -m $scan_wait -s "http://$ip:80" | grep -q "Zebra"; then
19
- content=$(curl -m 4 -s "http://$ip:80")
20
- if echo "$content" | grep -q "Zebra"; then
21
- model=$(echo """$content""" | perl -ne 'print $1 if /^(.*?)<\/H1>/')
22
- combo=$(echo """$content""" | perl -ne 'print $1 if /<TITLE>(.*?)<\/TITLE>/')
23
- serial=$(echo """$combo""" | cut -d '-' -f 1)
24
- zstatus=$(echo """$combo""" | cut -d '-' -f 2)
25
- arp_resp=$(arp -n $ip)
26
- echo "ZebraPrinter|$ip|$model|$serial|$zstatus|$arp_resp"
27
- fi
28
- fi
29
- done
30
-