curl ಇಲ್ಲದೆ HTTP ರಿಕ್ವೆಸ್ಟ್ಗಳು: Bash /dev/tcp ವಿವರಿಸಲಾಗಿದೆ
ನೀವು ಅತ್ಯಂತ ಕನಿಷ್ಠ ಸೌಲಭ್ಯಗಳಿರುವ (stripped-down) Docker ಕಂಟೇನರ್ನಲ್ಲಿದ್ದೀರಿ.
ನೀವು ಒಂದು API ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬೇಕಾಗಿದೆ.
ನೀವು curl ಎಂದು ಟೈಪ್ ಮಾಡಿದಾಗ "command not found" ಎಂಬ ಸಂದೇಶ ಬರುತ್ತದೆ.
ನೀವು wget ಅನ್ನು ಪ್ರಯತ್ನಿಸಿದಾಗಲೂ ಅದೇ ದೋಷ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
ನೀವು ಗಾಬರಿಯಾಗುವ ಅಗತ್ಯವಿಲ್ಲ. Bash ತನ್ನ ಮೂಲದಲ್ಲೇ ಒಂದು ಗುಪ್ತ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿದೆ. ಇದನ್ನು /dev/tcp ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.
ಯಾವುದೇ ಪರಿಕರಗಳನ್ನು (tools) ಇನ್ಸ್ಟಾಲ್ ಮಾಡದೆಯೇ ಈ ವೈಶಿಷ್ಟ್ಯವು ನಿಮಗೆ ನೇರ TCP ಕನೆಕ್ಷನ್ಗಳನ್ನು ತೆರೆಯಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದು ಬಹುತೇಕ ಎಲ್ಲಾ Linux ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ: ನೀವು /dev/tcp/hostname/port ಅನ್ನು ಬಳಸಿದಾಗ, Bash ಒಂದು ಸಾಕೆಟ್ ಕನೆಕ್ಷನ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ. ಇದು Bash-ನಿರ್ದಿಷ್ಟ ವೈಶಿಷ್ಟ್ಯವಾಗಿದೆ. ಇದು sh ಅಥವಾ zsh ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ.
ಮ್ಯಾಜಿಕ್ ಕಮಾಂಡ್:
exec 3<>/dev/tcp/hostname/port
ಈ ಸಾಲು ಬೈಡೈರೆಕ್ಷನಲ್ (bidirectional) ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ. ನೀವು ಇದಕ್ಕೆ ಡೇಟಾವನ್ನು ಬರೆಯಬಹುದು ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು (responses) ಓದಬಹುದು.
ಉದಾಹರಣೆಯ GET ರಿಕ್ವೆಸ್ಟ್:
#!/bin/bash
exec 3<>/dev/tcp/example.com/80
printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3
cat <&3
exec 3>&-
ಇದು ಏಕೆ ಉಪಯುಕ್ತ: • ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದ ಕನಿಷ್ಠ ಪರಿಸರಗಳಲ್ಲಿ (minimal environments) ಡಿಬಗ್ ಮಾಡಲು. • ಯಾವುದೇ ಅವಲಂಬನೆಗಳಿಲ್ಲದೆ (zero dependencies) CI/CD ಪೈಪ್ಲೈನ್ಗಳಲ್ಲಿ ಹೆಲ್ತ್ ಚೆಕ್ಗಳನ್ನು ನಡೆಸಲು. • ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗಳಲ್ಲಿ ಕನೆಕ್ಟಿವಿಟಿಯನ್ನು ಪರೀಕ್ಷಿಸಲು. • HTTP ಹೆಡರ್ಗಳು ನಿಖರವಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದನ್ನು ಕಲಿಯಲು.
ನೆನಪಿಡಬೇಕಾದ ಪ್ರಮುಖ ಮಿತಿಗಳು:
• HTTPS ಇಲ್ಲ: Bash ಇಂದ TLS/SSL ಎನ್ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಟ್ರಾಫಿಕ್ಗಾಗಿ openssl s_client ಬಳಸಿ.
• ರಿಡೈರೆಕ್ಟ್ಗಳು (Redirects) ಇಲ್ಲ: ನೀವು ಅವುಗಳನ್ನು ಮ್ಯಾನುಯಲ್ ಆಗಿ ನಿರ್ವಹಿಸಬೇಕು.
• ಸಂಕೀರ್ಣತೆ ಇಲ್ಲ: ಇದನ್ನು ಪ್ರೊಡಕ್ಷನ್ HTTP ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ ಬಳಸಬೇಡಿ. ಅದಕ್ಕಾಗಿ curl ಬಳಸಿ.
ಯಾವಾಗಲೂ Connection: close ಹೆಡರ್ ಅನ್ನು ಸೇರಿಸಿ.
ನೀವು ಅದನ್ನು ಮರೆತರೆ, ನಿಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ ಸರ್ವರ್ನ ನಿರೀಕ್ಷೆಯಲ್ಲಿ ಅತಂತ್ರವಾಗಿ (hang) ಉಳಿಯಬಹುದು.
ಮುಂದಿನ ಬಾರಿ ನೀವು ನಿರ್ಬಂಧಿತ ಸರ್ವರ್ನಲ್ಲಿ ಸಿಕ್ಕಿಹಾಕಿಕೊಂಡಾಗ, ಈ ಟ್ರಿಕ್ ಬಳಸಿ. ಇದು ಅಸಾಧ್ಯವಾದ ಪರಿಸ್ಥಿತಿಯನ್ನು ಒಂದು ಉಪಯುಕ್ತ ಸಾಧನವನ್ನಾಗಿ ಬದಲಾಯಿಸುತ್ತದೆ.
Source: https://dev.to/onsen/http-requests-without-curl-bash-devtcp-explained-5852
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi