एक बैच फ़ाइल बनाएँ या PuTTY (ssh) का शॉर्टकट जो एक सत्र खोलता है और एक कमांड चलाता है


10

मैं अक्सर खुद को एक ही कमांड चलाने के लिए SSH सत्र खोलना पाता हूं। मेरे पास पासवर्ड दर्ज किए बिना लॉगिन करने के लिए सब कुछ है (वाया एसएसएच की-बेस्ड ऑथोरिटी), इसलिए मुझे आश्चर्य हुआ कि क्या विंडोज में शॉर्टकट या बैच फ़ाइल बनाने का कोई तरीका था जो PuTTY या इसी तरह के प्रोग्राम को लोड करेगा, तो उसे बंद कर दें। कमांड (और यदि परिणाम अच्छा है, तो बाहर निकलने की संभावना है)।

जवाबों:


14

plink.exeपसंद के मेजबान के लिए SSH कनेक्शन को स्थापित करने के लिए कमांडलाइन PuTTY संस्करण का उपयोग करें । -sshSSH से जुड़ने के लिए स्विच का उपयोग करें । -mस्विच के साथ आप एक कमांड फाइल शामिल कर सकते हैं:

plink.exe -ssh host1 -m C:\path\to\commands.txt

आप यहाँplink.exe से डाउनलोड कर सकते हैं।

अंतिम चरण plink.exeवांछित मापदंडों के साथ एक शॉर्टकट बनाने के लिए होगा ।

अन्य विभिन्न मापदंडों के लिए प्लिंक प्रलेखन देखें : प्लिंक। Exe प्रलेखन


1
-mप्लिंक के साथ स्विच का उपयोग करने की आवश्यकता नहीं है , क्योंकि यह सीधे इसकी कमांड-लाइन पर कमांड निर्दिष्ट करने की अनुमति देता है, मेरा जवाब देखें ।
मार्टिन प्रिक्रील

मैं इस उत्तर को चुन रहा हूं क्योंकि मैं वह उपयोग करना पसंद करता हूं -ssh host1जो पोटीन से संबंधित है प्रोफाइल बनामuser@host
FreeSoftwareServers

@FreeSoftwareServers इस संबंध में PuTTY से कोई अंतर नहीं है। आप plink site commandउसी तरह से कर सकते हैं जैसे कि PuTTY (को छोड़कर command)। प्लंक और पुट्टी में मूल रूप से कमांड-लाइन विकल्पों का एक ही सेट है।
मार्टिन प्रिक्रील

8

कमांड निष्पादन को स्वचालित करने के लिए, पलक (PuTTY पैकेज से) का उपयोग करें , न कि खुद PuTTY का।

पलक अपनी कमांड लाइन पर एक कमांड स्वीकार करती है:

plink.exe user@host command

यदि आप PuTTY का उपयोग करते रहना चाहते हैं, तो आप कमांड फाइल को निर्दिष्ट करने के लिए -mस्विच का उपयोग कर सकते हैं (पलक -mस्विच का समर्थन करता है)।


जब मैंने कहा कि मेरे पास कोई पासवर्ड नहीं है, तो मुझे निर्दिष्ट करना चाहिए कि मेरा मतलब एसएसएच की-आधारित प्रामाणिक के साथ है, लेकिन मुझे लगा कि यह मान लिया जाएगा। मुझे नहीं लगता कि यह इस तरह से काम करेगा, इसे मापदंडों की आवश्यकता होगी जैसे-i key-pw password
FreeSoftwareServers

@FreeSoftwareServers इस संबंध में PuTTY से कोई अंतर नहीं है। आप plink site commandउसी तरह से कर सकते हैं जैसे कि PuTTY (को छोड़कर command)। प्लंक और पुट्टी में मूल रूप से कमांड-लाइन विकल्पों का एक ही सेट है।
मार्टिन प्रिक्रील

आपके उत्तर में SSH कुंजी आधारित प्रामाणिक उर्फ ​​पीडब्लूडी लॉगिन का उपयोग करने के विकल्प शामिल नहीं थे, जबकि सही झंडे मौजूद हैं, मैंने उन्हें पलक के लिए मैन पेजों में पाया जो कि MrPowerUsers के उत्तर में शामिल था, मुझे लगता है कि दोनों काम कर सकते थे लेकिन MrPower उपयोगकर्ता जवाब मेरे फिट थे बेहतर सवाल है और साथ ही मैन पेज से जुड़े
FreeSoftwareServers

6

आप इसे प्राप्त करने के लिए पोटीन कॉन्फ़िगरेशन का उपयोग कर सकते हैं।

पोटीन लोड करें और अपने सत्र को कॉन्फ़िगर करें।

वह दूरस्थ कमांड दर्ज करें जिसे आप यहां चलाना चाहते हैं:

पोटीन रिमोट कमांड बॉक्स

फिर, " ओपन " पर क्लिक करने से पहले , " सत्र " टैब (शीर्ष पर) पर वापस जाएं , और अपना कॉन्फ़िगरेशन सहेजें।

अब, उदाहरण के लिए, झंडा putty.exeजोड़ने का एक शॉर्टकट बनाएं -load:

%PATH_TO_PUTTY%\putty.exe -load my_config

अब, आप बस शॉर्टकट पर क्लिक कर सकते हैं और यह आपके कमांड को निष्पादित करते हुए, आपके सत्र को लोड करेगा।


कल कमाल लग रहा है, बीमार परीक्षण, मुझे लगता है मैं सिर्फ एक स्क्रिप्ट निष्पादित करेंगे और यह स्क्रिप्ट के परिणामों के आधार पर सत्र को समाप्त कर सकता है
FreeSoftwareServers

हां, कमांड समाप्त होने पर सत्र समाप्त हो जाएगा। यदि आप एक बार किए गए पुट्टी को घूमने के लिए पसंद करते हैं (जैसे: आउटपुट का निरीक्षण करने के लिए), तो " सत्र पर " टैब में " विंडो बंद करें " सेट करें
Attie

2

आप Windows 10 का उपयोग कर रहे हैं, तो आप को पता है कि माइक्रोसॉफ्ट रुचि हो सकती है कथित तौर पर OpenSSH (ग्राहक का बीटा है और सर्वर ):

[...] "वैकल्पिक सुविधाओं को प्रबंधित करें" पर जाएं फिर + "एक सुविधा जोड़ें"। फिर आप सूची को नीचे स्क्रॉल कर सकते हैं और विंडोज में ओपनएसएसएच क्लाइंट (बीटा) और ओपनएसएसएच सर्वर (बीटा) सुविधाएं पा सकते हैं। विंडोज पर एक और दूरस्थ सेवा चलाने का विचार चुनौतीपूर्ण हो सकता है इसलिए हम आपको दोष नहीं देते हैं यदि आप सर्वर को स्थापित नहीं करना चाहते हैं।

एक बार स्थापित होने के बाद, आप बस अपनी कमांड लाइन को फायर कर सकते हैं और ओपनएसएसएच क्लाइंट का उपयोग कर सकते हैं जैसे ssh टाइप करके कमांड का पालन करें ssh ubuntu@someIP

यहाँ वर्तमान (28 नवंबर, 2017 तक) sshकमांड उपयोग गाइड है जो हमें विंडोज ओपनएसएसएच क्लाइंट के साथ मिल रहा है:

C:\WINDOWS\system32>ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
           [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
C:\WINDOWS\system32>

यदि यह काम करता है, तो आप का उपयोग करने में सक्षम होना चाहिए sshजैसे आप एक * निक्स:

C:\WINDOWS\system32>ssh user@host "ls -l ~"

Thats वास्तव में जानने के लिए अच्छा है, लेकिन मैं SuperPuTTY से प्यार करता हूँ। मैं विंडोज ओपनएसएसएच पर भी नजर रखूंगा।
FreeSoftwareServers

क्या आपको उस मशीन पर ssh क्लाइंट की आवश्यकता है जिसे आप निकाल रहे हैं? मैं पूछता हूं क्योंकि कुछ मशीनें जो मैं रिमोट करता हूं वे विंडोज 10 नहीं हैं
Nelda.techspiress

1
@ Nelda.techspiress आपको केवल उन मशीनों पर चलने वाले सर्वर की आवश्यकता होनी चाहिए जो आप लॉग इन करते हैं और केवल उन मशीनों पर क्लाइंट की आवश्यकता होती है जिन्हें आप लॉग इन करते हैं। (इसके विपरीत, यदि आप एक मशीन में एक प्रॉक्सी के रूप में लॉग इन करते हैं, तो उस मध्य मशीन को दोनों की आवश्यकता होगी।)
माइकल - जहां

2

बस मैंने सोचा था कि मैं उस स्क्रिप्ट को सम्मिलित करूँगा जो मैंने उम्मीद की थी कि कुछ लोगों को सिंटैक्स और मैन पेज रिसर्च के कुछ घंटे बचाने होंगे

क) सिंगलआईपी, आईपी रेंज या आईपीएल फाइल

ख) आईपी / रेंज पर चलने के लिए स्क्रिप्ट का नाम (वास्तविक यूनिक्स श / क्श प्रकार स्क्रिप्ट)

c) वैकल्पिक रूप से पोर्ट 22 के लिए नैम्प स्कैन करें (यानी कुछ गैर-लिनक्स मशीनों के साथ सबनेट)

आईपी ​​से बचने के लिए पोटीन से कनेक्ट नहीं कर सकते, स्क्रिप्ट से बचने के लिए ठीक से जारी रखने में सक्षम होने से

घ) वैकल्पिक रूप से मेजबान कुंजी को स्वत: संचय करने के लिए pscp कमांड चलाएं (पोटीन स्वचालित रूप से ऐसा नहीं करता है)

यह बैच मानता है:

1. आपके पास C: \ Program Files \ PuTTY \ में पूर्ण PuTTY पैकेज और SSH कुंजी स्थापित है

2. बैच / स्क्रिप्ट / आईपीलिस्ट सी में स्थापित फाइलें: \ प्रोग्राम फाइलें \ PuTTY \ script \

3. NMAP और PuTTY वर्किंग डायरेक्टरीज़ आपके कमांड पथ में हैं

https://www.harmonyhit.com/PuttyBatch.bat

यह अधिकतर मशीनों की श्रेणी में एकल स्क्रिप्ट (जैसे SSL प्रमाणपत्र अपडेट करने) के लिए उपयोगी है

यहाँ पूरी बैच फ़ाइल है:

@ECHO रवाना

रेम आप अपने SSH प्रमुख स्थान को प्रतिबिंबित करने के लिए CACHEKEY और SCRIPT अनुभाग को संशोधित करना चाहिए

IPerm = IPList_temp.txt सेट करें
सेट रनगैन = n
सेट विकल्प = 1
सेट RANGE =
IP सेट करें =
SCAN = n सेट करें
KEYCACHE = n सेट करें

: विकल्प
सीएलएस
ECHO (कार्य निर्देशिका C: \ Program Files \ PuTTY \ script \) पर सेट है
ECHO। 
ECHO 1. एकल आईपी
ईसीएचओ 2. आईपी सूची फ़ाइल
ईसीएचओ 3. आईपी रेंज
ECHO।
सेट / पी विकल्प = "आईपी प्रकार चुनें:"
IF% OPTION% == 3 गोटो IPRANGE
IF% OPTION% == 2 GOTO IPLIST
IF% OPTION% == 1 गोटे सिंग्लिप
इको कृपया एक वैध विकल्प चुनें
गोटो विकल्प

: IPRANGE
ECHO निम्नलिखित उदाहरण के रूप में आईपी रेंज (ओं) को दर्ज करें। कई श्रेणियों के बीच एक स्थान का उपयोग करें:
ECHO अर्थात "10.21.0.15-99 10.21.1.15-100"
सेट / पी रेंज = एंटर रेंज: 
इको% RANGE%>% IPFILE%
GOTO SCRIPTNAME

: SINGLEIP
सेट / पी आईपी = आईपी दर्ज करें:
इको% IP%>% IPFILE%
GOTO SCRIPTNAME

: IPLIST
सेट / पी आईपी = आईपीएल फ़ाइल नाम दर्ज करें:
प्रतिलिपि / Y% IP%% IPFILE%
GOTO SCRIPTNAME

: SCRIPTNAME स्क्रिप्ट
सेट / पी SCRIPT = स्क्रिप्ट नाम दर्ज करें:
यदि% SCRIPT% मौजूद नहीं है (
इको फ़ाइलनाम मौजूद नहीं है!
GOTO SCRIPTNAME)

ECHO।
सेट / पी स्कैन = क्या Nmap पहले स्कैन करता है? (की सिफारिश की):
अगर% SCAN% == n गोटो: RUNCACHE

याद रखें कि क्या IP प्रकार "रेंज" है, क्योंकि nmap फ़ाइल से IP रेंज नहीं पढ़ सकता है और सीधे nmap कमांड में टाइप होना चाहिए
IF% OPTION% == 3 गोटो NMAPRANGE 
: Nmap
पोर्ट 22 ओपन के लिए इको स्कैनिंग आईपी ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP

: NMAPRANGE
पोर्ट 22 ओपन के लिए इको स्कैनिंग आईपी ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt

: AFTERNMAP
इको डन
रेम नैमप स्वरूपण सही नहीं है, निम्नलिखित अतिरिक्त जानकारी को हटा देता है
/ f "tokens = 2" %% A में (nmap_temp.txt) do echo %% A >> nmap_temp2.txt
आईपी ​​के अंत में छिपे हुए स्थान को हटा दें (बैच फ़ाइल निर्देशिका में "उत्तर" की आवश्यकता है)
टाइप करें "nmap_temp2.txt" | "" "">% IPFILE% उत्तर दें

: RUNCACHE
सेट / पी KEYCACHE = स्कैन और कैश SSH कुंजी (y / n)?
यदि% KEYCACHE% == n GOTO SCRIPT

: CACHEKEY
Host SSH होस्ट कुंजी को कैश करने के लिए सभी IP के माध्यम से चलाएँ यदि पहले से ही कैश नहीं है
for / F "tokens = *" %% A in (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PupptY \ SSH .ppk "-touch %% A: / tmp / test)

: स्क्रिप्ट
for / F "tokens = 1" %% A इन (% IPFILE%) करते हैं ("C: \ Program Files \ PuTTY \ putty.exe" -ssh %% A -l-root -i "C: \ Program Files) \ PuTTY \ SSH.ppk "-m" C: \ Program Files \ PuTTY \ स्क्रिप्ट \% SCRIPT% ")
यदि मौजूद है nmap_temp.txt (डेल nmap_temp.txt)
यदि मौजूद है nmap_temp2.txt (डेल nmap_temp2.txt)
सेट / पी रनगैन = "रीरन के लिए फिनिश या वाई में एंटर दबाएं"
अगर% रनगैन% == y गोटो विकल्प

1
लिंक पर केवल उत्तर दिए गए हैं, यदि आपकी साइट नीचे जाती है तो क्या होगा? यदि आप योगदान करना चाहते हैं, तो कृपया यहाँ स्क्रिप्ट साझा करें। यहाँ कोड के साथ साइट पर एक स्रोत / लिंक पोस्ट करने के लिए आपका स्वागत है, लेकिन उत्तर स्व-निहित होना चाहिए और निम्नलिखित लिंक की आवश्यकता नहीं होनी चाहिए।
FreeSoftwareServers

1
बैच सामग्री चिपकाया
टोड पोर्टर

एक मेजबान कुंजी "ऑटोकैच" न करें । होस्ट कुंजी को सत्यापित करना आपके SSH सत्र को सुरक्षित करने का एक अभिन्न अंग है। PuTTY (और इसके उपकरण) आपको मस्ती के लिए होस्ट कुंजी के लिए या आपको परेशान करने के लिए नहीं कहते हैं। इसका कारण है! + आपको उपयोगकर्ता डेटा ( SSH.ppkऔर स्क्रिप्ट ) to प्रोग्राम फ़ाइलें 'फ़ोल्डर को संग्रहीत नहीं करना चाहिए ।
मार्टिन प्रिक्रील

क्या आप यह सुझाव दे सकते हैं कि इसके बिना कई IP पर स्क्रिप्ट कैसे चलाएं? a) यह एक विशिष्ट उपयोगकर्ता डेस्कटॉप के लिए नहीं है, एक व्यवस्थापक सर्वर के लिए अधिक जहां सुरक्षा अधिक है जो सर्वर b तक पहुंच है) वास्तव में सुरक्षा जोखिम क्या है? होस्ट कुंजी को कैशिंग करना वैकल्पिक है और केवल एक बार सीमा के पार किया जाना चाहिए। यदि आप स्क्रिप्ट को फिर से चलाए बिना कुंजी को फिर से चलाएंगे तो आप अभी भी कुंजी परिवर्तन देखेंगे और होस्ट करेंगे और स्क्रिप्ट जारी नहीं रहेगी ...
टोड पोर्टर

...... कुंजी पर समझौता तू। मैं हमारे NAS पर एक साझा फ़ोल्डर की ओर इंगित करता हूं जहां साझा फ़ोल्डर रहता है, जिसकी केवल मेरे पास पहुंच है। मैंने अभी एक रास्ता चुना है क्योंकि अन्य उपयोगकर्ता अलग होंगे
टोड पोर्टर

1

आप mRemoteNG, MOBAxTerm या SecureCRT जैसे सॉफ्टवेयर को भी देख सकते हैं जो आपके लिए आपके SSH कनेक्शन का प्रबंधन करेगा, यह भी सहेजे गए PuTTY सत्र के साथ लिंक करता है ताकि आप सत्र के लिए एक टेम्पलेट लागू कर सकें।


0

यह अंतिम "सीएमडी" है जिसे मैं सिर्फ अपने फाइलस्वर पर सहेज सकता हूं और अपने डेस्कटॉप पर शॉर्टकट बना सकता हूं।

::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::/superuser/1278434/create-a-batch-file-or-shortcut-to-putty-ssh-that-opens-a-session-and-runs-a-c

set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"

cd %puttydir% 

%exe% %remotehost% %remotecmd%

::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.