Curl ಇಲ್ಲದೆ HTTP ರಿಕ್ವೆಸ್ಟ್‌ಗಳನ್ನು ಮಾಡುವುದು

ನೀವು curl ಅಥವಾ wget ಇಲ್ಲದ ಸರ್ವರ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡಬೇಕಾಗಬಹುದು. ನೀವು ಒಂದು ಎಂಡ್‌ಪಾಯಿಂಟ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಬೇಕಿದೆ ಆದರೆ ಆ ಪರಿಕರಗಳು (tools) ಅಲ್ಲಿ ಇಲ್ಲದಿರಬಹುದು. ನೀವು ನೇರವಾಗಿ HTTP ರಿಕ್ವೆಸ್ಟ್‌ಗಳನ್ನು ಕಳುಹಿಸಲು Bash ಅನ್ನು ಬಳಸಬಹುದು.

Bash ನಲ್ಲಿ /dev/tcp ಎಂಬ ಗುಪ್ತ ವೈಶಿಷ್ಟ್ಯವಿದೆ. ಇದು ನಿಜವಾದ ಫೈಲ್ ಅಲ್ಲ. ಇದು Bash ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಒಂದು ವಿಶೇಷ ಸಾಧನ (special device). ನೀವು /dev/tcp/hostname/port ಗೆ ಬರೆದಾಗ, Bash ನಿಮಗಾಗಿ ಒಂದು TCP ಕನೆಕ್ಷನ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ.

ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:

ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್‌ಗಳನ್ನು (file descriptors) ನಿರ್ವಹಿಸಲು ನೀವು exec ಕಮಾಂಡ್ ಅನ್ನು ಬಳಸುತ್ತೀರಿ. ಉದಾಹರಣೆಗೆ, ನೀವು ಓದಲು ಮತ್ತು ಬರೆಯಲು ಫೈಲ್ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ 3 ಅನ್ನು ತೆರೆಯಬಹುದು.

ಸಿಂಟ್ಯಾಕ್ಸ್ (syntax) ಈ ರೀತಿ ಇರುತ್ತದೆ: exec 3<>/dev/tcp/example.com/80

ಈ ಕನೆಕ್ಷನ್ ತೆರೆದ ನಂತರ, ನೀವು ಅದಕ್ಕೆ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಅದರಿಂದ ಡೇಟಾವನ್ನು ಓದಬಹುದು. ಈ ವಿಧಾನವು HTTP ಪ್ರೊಟೊಕಾಲ್ ಕಡಿಮೆ ಮಟ್ಟದಲ್ಲಿ (low level) ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಮಗೆ ತೋರಿಸುತ್ತದೆ.

GET ರಿಕ್ವೆಸ್ಟ್ ಮಾಡುವುದು ಹೇಗೆ:

ಡೇಟಾವನ್ನು ಪಡೆಯಲು, ನೀವು ಸರಿಯಾದ ಹೆಡರ್‌ಗಳನ್ನು (headers) ಕಳುಹಿಸಬೇಕು. ನಿಮ್ಮ ರಿಕ್ವೆಸ್ಟ್ ಮುಕ್ತಾಯಗೊಂಡಿದೆ ಎಂದು ಸೂಚಿಸಲು ಕೊನೆಯಲ್ಲಿ ಒಂದು ಖಾಲಿ ಸಾಲು (blank line) ಇರಬೇಕು.

ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ:

ಉದಾಹರಣೆ ಸ್ಕ್ರಿಪ್ಟ್:

HOST="example.com"
PORT=80
REQUEST_PATH="/"
exec 3<>/dev/tcp/${HOST}/${PORT}
printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
cat <&3
exec 3>&-

ಕ್ಲೈಂಟ್‌ಗಳು ಮತ್ತು ಸರ್ವರ್‌ಗಳು ಪರಸ್ಪರ ಹೇಗೆ ಸಂವಹನ ನಡೆಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಈ ತಂತ್ರವು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕನಿಷ್ಠ ಸೌಲಭ್ಯವಿರುವ (minimalist) ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ ಡಿಬಗ್ ಮಾಡಲು ಇದು ಉಪಯುಕ್ತ ಕೌಶಲ್ಯವಾಗಿದೆ.

Source: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k