एक-लाइन कमांड चलाकर टेलनेट का उपयोग कर रिमोट टीसीपी पोर्ट का परीक्षण


12

मेरे पास कमांड और डिस्क स्थान के बहुत सीमित सेट के साथ कई लिनक्स बॉक्स हैं। लेकिन इस telnetपर इसकी कमान है।

मैं इनमें से प्रत्येक जांच (प्रोग्राम) से दूरस्थ रूप से जुड़ता हूं और एसएसएच के माध्यम से एक लाइन लाइनक कमांड जारी करता हूं।

मुझे टेलनेट का उपयोग करके एक विशिष्ट मशीन से जुड़ने के लिए एकल कमांड चलाने की आवश्यकता है, और फिर तुरंत डिस्कनेक्ट करें

मैं वह सब कर सकता हूं, लेकिन वियोग अभी दूर भाग रहा है। टेलनेट किसी प्रकार के कंसोल, या टर्मिनल को खोलता है और मैं टेलनेट कमांड को चलाने के लिए एक-लाइन कमांड का पता नहीं लगा सकता और फिर तुरंत डिस्कनेक्ट कर सकता हूं।

अगर मैं ऐसा करता हूं, तो मैं आसानी से निर्दिष्ट पोर्ट पर मशीन से कनेक्ट नहीं होने के लिए त्रुटि संदेशों के लिए पाठ आउटपुट को पार्स कर सकता हूं और ठीक यही मैं देख रहा हूं।

तो मैं टेलनेट का उपयोग करके मशीन से कनेक्ट करने के लिए एक-लाइन कमांड कैसे चला सकता हूं और बाद में डिस्कनेक्ट कर सकता हूं?


जैसा कि मैं समझता हूं कि आपका टेलनेट ग्राहक सीधे भेजने का समर्थन नहीं करता है?
IBr

@ आईबीआर, आपका क्या मतलब है?
मुहम्मद गालबाना

ध्यान दें कि क्लाइंट साइड एग्जिट कमांड को समाप्त करने के लिए उपयोग किए जाने के बाद रिपोर्ट किए गए टेलेंट क्लाइंट से बाहर निकलने के कोड में अंतर होता है। इसलिए शून्य निकास कोड को एक संकेत नहीं माना जाना चाहिए जो पोर्ट खोला गया है। कम से कम आरएचईएल टेलेंट आरपीएम के लिए काम नहीं करता है।
ओलिवर गोंडूजा

जवाबों:


28

आपको exitSTDIN में कमांड को पाइप करने में सक्षम होना चाहिए telnet। प्रयत्न:

echo 'exit' | telnet {site} {port}

और देखें कि क्या काम करता है। (यह मेरे वेब सर्वर पर काम करने लगता है, लेकिन YMMV)।


काम कर सकते हैं लेकिन लगता है कि गूंगा - टेलनेट के पास पहले संपर्क पर बाहर निकलने या कुछ करने का विकल्प होना चाहिए
अलेक्जेंडर मिल्स

10

सबसे सरल और आसान विधि नीचे दी गई है।

 sleep <n> | telnet <server> <port>

n - ऑटो निकलने से पहले सेकंड में प्रतीक्षा समय। यह 0.5 की तरह आंशिक हो सकता है। ध्यान दें कि कुछ आवश्यक आउटपुट निर्दिष्ट प्रतीक्षा समय में वापस नहीं किए जा सकते हैं। इसलिए हमें तदनुसार वृद्धि करने की आवश्यकता हो सकती है।

सर्वर - लक्ष्य सर्वर आईपी या होस्टनाम।

port - लक्ष्य सेवा पोर्ट संख्या।

आप आउटपुट को इस तरह फाइल करने के लिए रीडायरेक्ट कर सकते हैं,

sleep 1 | telnet <server> <port> > output.log

यह पूरी तरह से काम करता है! जबकि आउटपुट वास्तव में पुनर्निर्देशित है, मैंने देखा कि मुझे अभी भी "विदेशी होस्ट द्वारा कनेक्शन बंद कर दिया गया है।" मेरे कंसोल में आउटपुट आउटपुट के बजाय नींद के बाद। इसे रोकने का कोई तरीका?
डैन

5

मेरे मामले में यह काम करता है। (सेंटो 7):

while read host port; do
r=$(bash -c 'exec 3<> /dev/tcp/'$host'/'$port';echo $?' 2>/dev/null)
if [ "$r" = "0" ]; then
     echo "$host $port is open"
else
     echo "$host $port is closed"
     exit 1 # To force fail result in ShellScript
fi
done

1
अरे, यह बहुत अच्छा है। मैं अपनी नौकरी पर सभी लिनक्स सिस्टम पर एक उपयोगकर्ता हूं, लेकिन व्यवस्थापक नहीं (और कोई व्यवस्थापक अधिकार नहीं है)। मैं उन्हें हर समय टेलनेट स्थापित करने के लिए कहने के लिए बीमार हूं इसलिए मैं नेटवर्क कनेक्टिविटी (मैं एक नेटवर्क इंजीनियर हूं) का परीक्षण कर सकता हूं। यह एक उत्कृष्ट समाधान है। मैंने टेलनेट की तरह अधिक प्रदर्शन करने के लिए इसे थोड़ा बदल दिया। मैंने संशोधनों के साथ यहां अपना जवाब दिया।
theglossy1

3

मुझे लगता है कि सीधे कमांड भेजने के लिए बेहतर उपकरण और सिर्फ आउटपुट प्राप्त करना नेटकैट होगा। यह बंदरगाहों के माध्यम से कमांड डालने का सरल, लेकिन शक्तिशाली उपकरण है। आप इस सुपरसुअर प्रश्न में उपयोग का उदाहरण देख सकते हैं: /superuser/261900/how-can-i-pipe-commands-to-a-netcat-that-will-stay-alive- एक्सर वर्किंग उदाहरण देता है जिसमें कुछ सेकंड के बाद कनेक्शन बंद हो जाता है।

और यदि आप कनेक्टिविटी का परीक्षण करना चाहते हैं तो इसका उपयोग करें: http://terminalinflection.com/use-netcat-not-telnet-to-test-network-connectivity/


मैं अभी netcat स्थापित करने की कोशिश कर रहा हूँ, लेकिन मैं ऐसा करने में असमर्थ हूँ। मैंने एक संकलित पावरपीसी संस्करण डाउनलोड किया था लेकिन ग्लिबेक लाइब्रेरी गायब थी। मैंने एक संकलित पावरपैक संस्करण डाउनलोड किया है लेकिन डिवाइस में लाइब्रेरी फ़ाइलों की प्रतिलिपि बनाने के लिए पर्याप्त स्थान नहीं है! क्या यह संभव है कि ग्लिब्क लाइब्रेरी पहले से मौजूद है लेकिन नेटकैट उसे नहीं मिल सकता है?
मुहम्मद गालबाना

Netcat की आवश्यकता केवल क्लाइंट पक्ष पर होती है: सर्वर पर (जांच) समान सादे पुराने टेलनेट हो सकते हैं।
आईबीआर

इसके अलावा ग्लिब्क पहले से ही मौजूद होना चाहिए, यह सामान्य प्रणाली में बहुत सामान पर उपयोग किया जाता है।
आईबीआर

आप टेलनेट स्क्रिप्ट को जोड़ने की कोशिश कर सकते && exitहैं यह देखें कि क्या यह डिस्कनेक्ट करता है (ssh में कम से कम यह पर्याप्त है)।
आईबीआर

&& exitकाम नहीं किया। अगर glibc मौजूद होना चाहिए और मेरा मानना ​​है कि यह करता है। nc.traditionalइसके बारे में शिकायत क्यों करेंगे जैसे कि यह गायब है?
मुहम्मद गेल्बाना

2

यह ऊपर दिए गए उत्तर का एक और संस्करण है जो इसे "सामान्य" टेलनेट सिंटैक्स की तरह थोड़ा अधिक कार्य करता है। अगर आपको मेरा जवाब पसंद आया, तो कृपया इसे न करें, लेकिन मूल को दें।

#!/bin/bash
if [ "$2" == "" ]; then
 echo "Syntax: $0 <host> <port>"
 exit;
fi

host=$1
port=$2

r=$(bash -c 'exec 3<> /dev/tcp/'$host'/'$port';echo $?' 2>/dev/null)
if [ "$r" = "0" ]; then
     echo "$host $port is open"
else
     echo "$host $port is closed"
     exit 1 # To force fail result in ShellScript
fi

1

यहाँ मैं इंटरनेट पर पाया समाधान है:

( echo open 127.0.0.1 23
sleep 5
echo your_login
sleep 5
echo your_password
sleep 5
echo hostname
sleep 5
echo exit ) | telnet

यह SunOS और HP-UX पर मेरे लिए काम करता है


0

प्रयत्न

echo -e '\x1dclose\x0d' | telnet {HOSTNAME} {PORT}

ऊपर का सबसे अच्छा हिस्सा आपको बाहर निकलने की स्थिति भी मिलती है। अगर टेलनेट सफलता से बाहर है तो कोड 0 होगा या फिर उसका 1


0

यदि आपके पास कस्टम मार्ग हैं, तो नेटकट से बचें, क्योंकि यह रूटिंग नियमों का पालन नहीं करता है। कैसे nslookup, digऔर host/ etc / होस्ट फ़ाइल ( nslookup, खुदाई, फ़ायरफ़ॉक्स अनदेखी / / मेजबान फ़ाइल प्रविष्टियों ) की उपेक्षा

यानी: जैसे अनुप्रयोगों और उपकरणों के विपरीत telnetऔर /dev/tcp( एक लाइन कमांड चलाकर टेलनेट का उपयोग करके दूरस्थ टीसीपी पोर्ट का परीक्षण ) जो सिस्टम के रूटिंग नियमों का पालन ncकरता है, डिफ़ॉल्ट गेटवे का उपयोग करता है जब तक कि विशेष रूप से स्रोत आईपी पते का उपयोग करने के लिए नहीं कहा जाता है -s:

nc -w 3 -s 192.168.1.12 example.com 8080

मुझे यह परीक्षण करने की आवश्यकता है कि क्या कोई एप्लिकेशन संसाधन तक पहुंच सकता है, और यदि मार्ग नीचे थे, तो netcatरिपोर्ट किया गया कि परीक्षण में स्रोत पते को निर्दिष्ट किए जाने के बाद से सब ठीक था। मैं उपयोग करने के लिए स्विच कर रहा हूँ /dev/tcp

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.