Tuesday, December 25, 2018

K2S - कशासाठी

Only those who will risk going too far can possibly find out how far one can go.  -- T.S. Eliot

जर तुम्ही पुण्यनगरीत रहात असाल आणि असं काही करायची हुक्की आली तर जवळच एक उत्तम जागा आहे.  जागा नव्हे एक प्रयोगशाळा म्हणा.  स्वतःला ओळखण्याची.  स्वतःच्या क्षमता जाणून घेण्याची.  तमाम ट्रेकर मंडळींमधे हि प्रयोगशाळा K2S म्हणून प्रसिद्ध आहे.  कात्रज ते सिंहगड.  के टु एस.  जुन्या मुंबई बंगलोर रस्त्यातल्या बोगद्यापासून चालत जायचं सिंहगडापर्यंत.  अंतर मोजलं तर साधारण १३ किलोमीटर.  ह्यात सपाट भाग कुठेच नाही.  १६ टेकड्या चढायच्या आणि उतरायच्या.  एकामागोमाग एक.  एकदा चालायला सुरुवात केली कि हा प्रयोग संपवावाच लागतो.  मधे कुठे सोडून देऊ शकत नाही.  तसा पर्यायच उपलब्ध नाही.  एकदा सुरुवात केली कि प्रयोग संपवूनच सोडायचा.

मागच्या वर्षी मी केलेला हा प्रयोग जरा अवघड गेला होता.  शनिवारी सकाळी नेहमीप्रमाणे दोन तास फुटबॉल खेळलो.  पूर्ण दिवस छोट्या मोठ्या कामांमधे गेला.  दिवसा झोप न घेता तसाच थकलेल्या अवस्थेत रात्री K2S चा प्रयोग केला.  हात पाय गळाले नव्हते पण निद्रादेवी क्रोधीत झाली.  ते प्रकरण इथे वाचा.

ह्यावेळी शनिवार सकाळचं फुटबॉल सोडून दिलं.  दुपारी अर्धा तास झोपायचा प्रयत्न केला.  दिवसा जमेल तेवढा आराम करायचा प्रयत्न केला.  असा K2S साठी संध्याकाळी तयार होतो.  साडेसात वाजता विशालचा फोन आला, त्याने ग्रुप घेऊन स्वारगेट सोडलंय.  आणि मी अजून घरीच होतो.  बापरे.  मग बदाबद बॅग भरली आणि निघालो.  पिंपळे सौदागर ते स्वारगेट रिक्षा प्रवास हा एक वेगळा विषय ठरला.  मीटर भाड्याने रिक्षा मला वर्ज्य आहे.  तरी वेळेला करावी लागली.  बुद्धिबळाच्या पटावरचा जसा घोडा, तशी पुण्याच्या रस्त्यांवर रिक्षा.  बुद्धिबळाच्या पटावर सगळ्यात आगळा वेगळा कोण असेल तर घोडा.  भयंकर अनाकलनीय चाल.  प्रचंड अनपेक्षित मार्गक्रमण.  सगळ्या सुखद सुरळीत चाललेल्या राज्यात नेमक्या वेळी येऊन कडमडणार आणि सगळा डाव पलटवणार.  नाहीतर नेमक्या ठिकाणी उभा रहाणार आणि प्रतिस्पर्ध्याच्या नाकात दम आणणार.  हल्ला करायला लागला कि समोरच्याला पळता भुई थोडी.  आणि दोन घोडे एकत्र आले तर मग विचारूच नका.  तर अशा ह्या रिक्षाने तिच्या अगम्य अतर्क्य चालीने वाटेतला पटाचा जमेल तेवढा भाग उधळत मला इच्छित स्थळी वेळेत नेऊन पोहोचवले.

एक एक करत १४ स्वछंद गिर्यारोहक जमा झालो.  साडेनऊला बस आल्यावर बस मधे चढलो.  बस पूर्ण भरलेली.  बरेचसे K2S साठीचे ट्रेकर्स.  काही पुण्यातून आपापल्या गावी परतणारे गावकरी.  कात्रज घाट चढून गेल्यावर जो बोगदा आहे, त्याच्या नंतर लागेचच K2S ट्रेकची सुरुवात आहे.  इथे बस बरीचशी रिकामी झाली.  एक मोठा ग्रुप खाजगी बस मधून आला होता.  त्यांच्यातल्या एकाने स्टिरीओ सिस्टिम वर मोठ्या आवाजात गाणी लावलेली.  आत्ता उडतोय.  रात्रीत K2S ह्याचा जीव काढेल.  तो मोठा ग्रुप आणि पंधरा राही ट्रेकर्स पुढे गेल्यावर आम्ही त्यानंतर K2S च्या वाटेने सुरुवात केली.  थोडं पुढे गेल्यावर एका मोकळ्या ठिकाणी आम्ही १४ जणांनी तोंडओळख करून घेतली.  देवळाजवळ न जाता K2S च्या वाटेने पुढे निघालो.  अमोल सगळ्यात पुढे, भाग्येश सगळ्यात शेवटी, आणि ह्या दोघांमधे बाकीचे सगळे.  हे फॉर्मेशन तुटू द्यायचे नाही.  काहीही झाले तरी स्वछंद गिर्यारोहक कधीच कोणाला सोडून जात नाहीत.

काही वेळापूर्वी विशाल आणि ग्रुप देवळापासून पुढे गेले होते.

पुणे आणि सभोवतालचा परिसर  ...  K2S ट्रेक मधे पाहिलेला

मुंबई बंगलोर नव्या रस्त्याला जो बोगदा आहे त्या डोंगरावरून K2S ची वाट जाते.  पुणे आणि सभोवतालचा बराच मोठा परिसर इथून दिसतो.

पहिल्या दोन टेकड्या मोठ्या आहेत.  ह्या दोन मधेच चित्र बरंचसं स्पष्ट होतं. आज ट्रेकला किती वेळ लागणार ते.

तिसरी किंवा चौथी टेकडी असेल जिथे आम्ही विशाल आणि पहिल्या फळीतल्या स्वछंद गिर्यारोहकांना जाऊन मिळालो.  आता विशाल ने सगळ्यांचं एक फॉर्मशन केलं.  अमोल सगळ्यात पुढे.  भाग्येश सगळ्यात शेवटी.  दोघांच्या मधे सगळ्या स्वछंद गिर्यारोहकांना घेऊन विशाल आणि प्रसाद.

टेकड्यांमागून टेकड्या संपवल्या.  आज मी ठरवूनच आलो होतो.  K2S तोडायचाच.  पूर्ण वेळ अमोल बरोबर लीड ला राहिलो.

अंधाराची भीती घालवण्यासाठी रात्रीचा K2S ट्रेक हि उत्तम जागा आहे.  आज पौर्णिमा असल्याने चंद्राचा प्रकाश पूर्णवेळ मदतीला होता.  टॉर्चची गरजच नव्हती.  हात मोकळे असलेले केव्हाही चांगलेच.  ह्या ट्रेकला वाट चुकायचा धोका नाही.  शेवटची टेकडी येईपर्यंत एकच वाट आहे.  वाट सोडून कुठेही डावीकडे उजवीकडे जायचे नाही.  वाट जाईल तशा सर्व टेकड्या चढायच्या आणि उतरायच्या.  कुठेही टेकडी सोडून शॉर्टकट मारायला जायचं नाही.  सिहंगडावरच्या टॉवरवरचा लाल लाईट पहिल्या टेकडीपासून दिसत राहतो.

आज डिसेंबरच्या थंडीतला शनिवार आणि पौर्णिमा.  K2S साठी जुळून आलेला योग्य दिवस.  तसा K2S अवघड प्रकारे करायचा असेल तर दिवसा करावा.  रात्रीच्या वेळी अवघड प्रकारे करायचा असेल तर उन्हाळ्यातल्या अमावास्येच्या रात्री करावा.  मिट्ट काळोखात.

टेकड्या चढण्या उतरण्याचा आज भरपूर सराव झाला.  टेकड्या उतरताना आज मी वापरलेली तंत्र सांगतो. 
१. नाकासमोर सरळ न उतरता तिरकं उतरत जायचं.  हे तुम्हाला माहिती असेल.  आता ह्यातले बारकावे बघा.  दहा बारा पावलं एका बाजूला तिरकं गेल्यावर दुसऱ्या बाजूला तिरकं जायचं.  अशी बाजू बदलल्याने आपण चालत्या वाटेपासून फार लांब भरकटत जात नाही.  बाजू बदलताना दोन पर्याय आहेत.  शरीराची दिशाही बदलायची, किंवा शरीराची दिशा तीच ठेऊन फक्त बाजू बदलायची.
२. उतारावर वेग पकडला असाल आणि थांबायचं असेल तर डावीकडे नव्वद अंशात वळायचं.  वेग कमी होऊन थांबुन जाल. डावीकडेच का वळायचं, उजवीकडे का नाही ह्याचं माझ्याकडचं उत्तर हे माझं एक सीक्रेट आहे.  कोणाला सांगू नका.  मला डावीकडे वळणं सोपं जातं कारण माझ्या शरीराची डावी बाजू उजव्या बाजूपेक्षा जास्त लवचिक आहे.  कोणाला सांगू नका.  तुम्ही तुमच्यासाठी योग्य असेल त्या बाजूला वळा.
३. नेहमीपेक्षा छोटी पावलं टाकत उतरायचं.  ह्यामुळे उतरताना शरीराचा तोल सांभाळला जातो.
४. उतरताना मधेच थांबायचं नाही. एका वेगात उतरत राहायचं.  वेग कमी किंवा जास्त करायचा नाही.  थांबलो तर "आता काय करू" असा प्रश्न पडतो, आणि सुसाट वेग पकडला तर उतारावर थांबणं अवघड.
५. वाटेच्या बाजूला मोठे दगड असतील तर हाताने त्यांचा आधार घ्यायचा.  हाताने आधार घेतला कि पायांवरचा भार कमी होतो.
६. वाटेच्या बाजूला मजबूत झाड असेल तर त्याचा आधार घ्यायचा.
७. अवघड ठिकाणी ढुंगण टेकवून घसपटत जाण्याला पर्याय - पाय दुमडून अर्ध बसायचं, ढुंगण टेकवायचं नाही.  ह्यासाठी पायात ताकद लागते.  आता पायांच्या लांबीचा वापर करून एक एक पाय पुढे टाकत जायचं.  खूप वेळ नाही पण दोन चार पावलं असं जाता येईल, ज्यात छोटी असलेली अवघड जागा पार होईल.  दुमडलेला पाय अडकत नाही ह्याकडे लक्ष असू द्या.  एक पाय पूर्ण दुमडला आणि दुसरा पूर्ण लांब करून पुढे टाकला,  तर दुमडलेला पाय परत सरळ करता येत नाही.  पोझिशन लॉक होते.  त्यामुळे ८० % पाय दुमडून २० % बाकी ठेवावा.  तसेच पुढे टाकलेला पाय ८० % लांब करून २० % बाकी ठेवावा. अशी मोकळी जागा ठेवावी.

एवढं ज्ञान पाजळल्यावर तुम्हाला जर वाटलं कि मी डोंगर उतरण्याचा निष्णात आहे, तर तो तुमचा गैरसमज असेल.  माझी हुशारी डोंगर चढण्यात आहे.  पायातली ताकद डोंगर चढायला कामी येते.  डोंगर उतरण्यात ताकदीचे काय काम.  थांबूया.  स्व मग्न होण्याआधीच आवरते घेउया.

K2S हि काही ऐतिहासिक जागा नाही.  त्यामुळे वाटेत किल्ल्याच्या भिंती, बुरुज, दगडात कलाकुसर केलेली देवळं, वीरगळी, सतीच्या शिळा, असलं इथे काहीएक नाही.  हि आहे स्वतःचा शोध घ्यायची एक प्रयोगशाळा.  ह्या प्रयोगाच्या शेवटच्या टप्प्याचं वैशिष्ठ्य आहे एन्ड्युरन्स.  सहनशक्ती.  एकेकीचा विचार केला तर ह्या टेकड्या सोप्या आहेत.  एका रांगेत १६ मांडल्यामुळे K2S हा अनोखा प्रयोग जमून आलाय.  आज सगळे ग्रुप मिळून अडीजशे ट्रेकर असतील हा प्रयोग करून पहाणारे.  पुढे गेलेल्या आणि मागून येणाऱ्या ग्रुप चे टॉर्च दिसत रहातात.  त्यामुळे कुठून आलोय आणि कुठे जायचंय त्याचा अंदाज येतो.

शेवटच्या टेकडीला तीन वाटा आहेत.  लीड ला असेलेले आम्ही पाच जण इथे थांबलो.  प्रसाद आमच्या आधी इथे पोहोचला होता.  मधल्या फळीतले स्वछंद गिर्यारोहक येईपर्यंत आम्हाला इथे थांबायचं होतं.  पहाटेचे पाच वाजले असतील.  इथे हाडं गोठवणारी थंडी.  रात्री चालताना थंडी नव्हती.  आता इथे झोप तर राहूदे बाजूला, थंडीमुळे काय करावे ते कळत नव्हते.

एक एक करत मधल्या फळीतले स्वछंद गिर्यारोहक दाखल झाले.  १५ झाल्यावर निघालो.  उजवीकडची वाट पकडली जी रस्त्यावर जाते.  रविवार सकाळी सिंहगड चढणाऱ्यांची रांग पूर्ण डोंगरभर.  अंधारात त्यांचे टॉर्च ओळीने चमकत होते.

विशालने सांगून ठेवलेली जीप रस्त्यावर तयार होती.  १४ जण कोंबून बसलो.

गुगल मॅप मधे बघितलेला K2S ट्रेक चा भाग
केशरी ठिपका  = पायगाडीला सुरुवात
लाल ठिपका = गाडीरस्त्याला येऊन मिळालो
ह्या दोन्ही ठिपक्यांना जोडणाऱ्या डोंगरांच्या रेषेवरून चालत १६ टेकड्या पार करायच्या

सिंहगडावर जाणाऱ्या गाडीरस्त्याच्या शेवटच्या टप्प्यात रस्ता कॉंक्रिटचा बनवण्याचं काम चालू आहे.  पुणे दरवाजातून वर गेलो.  रविवार सकाळची तुडुंब गर्दी.  लिंबू पाणी, चिंच, काकड्या, वगैरे विकणारी दुकानं.  तेच नेहमीचं दृश्य.  अजून सूर्योदय व्हायचा बाकी होता.

पुणे दरवाजातून वर गेल्यावर
कुठच्या १६ टेकड्या चालून आलो त्यांचा फोटो काढला.

१६ टेकड्या ज्या आम्ही चालून आलो  ...  सिंहगडावरून पाहिलेल्या

बऱ्याच दिवसानंतर आज इथे येत होतो.  कोणालाही कितीही आपलासा वाटला तरी हा गड आहे सिंहाचा. तानाजीचा आणि शिवबाचा.  आपण सगळे इथे उपरा.

K2S ट्रेकच्या पहिल्या टेकडीपासून दिसत होता तो लाल लाईट  ...  आणि टॉवर

आम्हाला सागर हॉटेलपाशी थांबायचं होतं.  सागर हॉटेल शोधून काढलं.  मालक हजर नव्हते.  हॉटेल अजून सुरु झालेलं नव्हतं.  आम्हीच हॉटेलचा बोर्ड बाहेर आणून ठेवला.  मागून येणाऱ्या स्वछंद गिर्यारोहकांना कुठे थांबायचंय ते कळण्यासाठी.

आजचे सगळे स्वछंद गिर्यारोहक इथे पोहोचायला वेळ लागणार होता.  समोर कड्याजवळ गेलो.  इथे उजव्या बाजूला कल्याण दरवाजा.  न राहवून तिकडे गेलो.  जातानाच सूर्योदय झाला.

सूर्योदय  ...  कल्याण दरवाजाजवळून पाहिलेला

कल्याण दरवाजाजवळ भरपूर फोटो काढले. 

शाळेत आणि कॉलेजला असताना मला एक प्रश्न होता, ह्या दरवाजाला कल्याण दरवाजा का म्हणतात?  इथून मुंबई जवळच्या कल्याणला जाणारी वाट आहे काय?  नंतर कधीतरी कळले, इथून खाली डोंगर उतरून गेल्यावर कल्याण नावाचे गाव आहे.  म्हणून हा कल्याण दरवाजा.

दरवाजात वरच्या बाजूला शिलालेख आहे त्याचा फोटो घेण्याचा प्रयत्न केला.  मोबाईल मधे चांगला आला नाही.  परत कधीतरी DSLR घेऊन येईन.
श्री शालिवाहन शके १६७२ कारकीर्द
श्रीमंत बाळाजी बाजीराव पंडित प्रधान

असं दगडात लिहिलेलं आहे.

दरवाजाच्या आतल्या बाजूच्या देवड्या.  दगडी भिंतीतले कोनाडे.  बाहेरच्या दोन्ही बाजूकडच्या भिंतींवरची शरभ शिल्प.  दरवाजावरची कमळ शिल्प.  गणपती.  दरवाजाच्या पुढे काढलेले बुरुज.  का ते कळत नाही पण इथे आलं कि मन तृप्त होतं.

कल्याण दरवाजा
पलीकडे गर्दीने भरलेला पुणे दरवाजा आणि इथे मनमोकळा कल्याण दरवाजा.  किती मोठा कॉन्ट्रास्ट.

दुसरा दरवाजा

दोन दरवाजे आणि त्यांचे बुरुज.  युद्धशास्त्राच्या दिशेने पहिले तर उत्कृष्ट रचना आहे.

वाट उतरून थोडं पुढे गेलो.

बुरुज  ...  वाटेने थोडं खाली उतरून पाहिलेला
मग परत फिरून तृप्त मनाने सागर हॉटेल पाशी परतलो.  बरेचसे स्वछंद गिर्यारोहक इथे आलेले होते.  मागे रेंगाळलेले काहीजण थोड्या वेळात पोहोचले.

यथावकाश न्याहारी केली.  कांदाभजी, लाल चटणी, पिठलं भाकरी, वांग्याचं भरीत, हिरवा ठेचा, मडक्यातलं दही.  रात्रभराच्या जोमदार ट्रेकिंग नंतर कल्याण दरवाजाला सुखद भेट आणि त्यानंतर पोटभर जेवण.  अजून काय पाहिजे जीवाला.

सिंहगडावर न्याहारी

निघालो तेव्हा साडेनऊ होऊन गेले होते.  जीपने कोंढणपूर गावात गेलो.  विशालने जीपची व्यवस्था आधीच करून ठेवली होती.  नेहमीप्रमाणे हाही ट्रेक विशालने उत्तम प्रकारे घडवला.  ट्रेकिंग संस्था चालू करणे सोपं आहे.  आयोजित केलेला प्रत्येक ट्रेक उत्तम प्रकारे पार पाडणं, तेही खंड न पाडता प्रत्येक वर्षी, हे भलतं अवघड आहे.

थोड्या वेळाने स्वारगेट बस आली.  बस मधे जमेल तशी झोप काढली.  स्वारगेटला उतरून तिथे मी शिवाजीनगर बस पकडली.  शिवाजीनगरला रस्त्यापलीकडे जाऊन पिंपरी गाव बस घेतली.  कोकणे चौकात घराजवळ उतरलो.  एक ग्लास उसाचा रस पिऊन घरी गेलो तेव्हा एक वाजला असेल.  १०० टक्के बॅटरी संपलेल्या अवस्थेत घरी जाऊन चालत नाही.  ९० टक्के बॅटरी संपवून १० टक्के बाकी ठेवावी लागते.  का ते सुज्ञ ट्रेकर जाणून असतीलच.  राहिलेली झोप पूर्ण करायला मला तीन तास लागले असतील.  मग?  कशासाठी करायचा हा खटाटोप.  सुट्टीच्या दिवशी खाऊन पिऊन ताणून द्यायची.  मस्त मजेत दिवस घालवायचा.  टीव्ही समोर लोळायचं.  कशाला जीवाला त्रास.  कशासाठी.  उत्तर सापडलं नसेल आणि शोधायची इच्छा असेल तर पडा एकदा घराबाहेर.  करा सीमोल्लंघन.  पडा कम्फर्ट झोन च्या बाहेर.  स्वछंद गिर्यारोहकांच्या ह्या संकेतस्थळ भेट द्या आणि बघा पुढचा कुठला ट्रेक करता येतोय ते.

Tuesday, December 11, 2018

Python script to execute commands on a remote machine, when passwordless SSH setup is in place

In our lab we have setup passwordless SSH between some systems, using SSH keys.  A python script was required that could login to a remote system where passwordless SSH is in place, execute the given command, and obtain its output.  I used Paramiko module for doing this task.  Here is the script.

import paramiko

remote_system = 'your.ip.address.here'
remote_user = 'jdoe'
remote_port = 22
remote_cmd = 'ls'

remote_ssh_client = paramiko.SSHClient()
    # Create SSH client object

remote_ssh_client.load_system_host_keys()
    # Load host keys from a system (read-only) file

remote_ssh_client.set_missing_host_key_policy(paramiko.WarningPolicy())
    # Set policy to use when connecting to servers without a known host key
    # WarningPolicy = Policy for logging a Python-style warning for an unknown
    # host key, but accepting it

ssh_connect_timeout = 10
    # in seconds
remote_ssh_client.connect(remote_system, port=remote_port, look_for_keys=True, timeout=ssh_connect_timeout)
    # Connect to an SSH server and authenticate to it.
    # The server's host key is checked against the system host keys (see
    # load_system_host_keys) and any local host keys (load_host_keys).
    # If the server's hostname is not found in either set of host keys, the
    # missing host key policy is used (see set_missing_host_key_policy)
    #
    # look_for_keys   set to True to enable searching for discoverable private
    # key files in ~/.ssh/
    #
    # Raises : SSHException  if the server fails to execute the command

exec_command_timeout = 10
    # in seconds
remote_stdin, remote_stdout, remote_stderr = remote_ssh_client.exec_command(remote_cmd, timeout=exec_command_timeout)
    # Execute a command on the SSH server. A new Channel is opened and the
    # requested command is executed.  The command's input and output streams
    # are returned as Python file-like objects representing stdin, stdout, and stderr

for line in remote_stdout:
   print line.strip('\n')

remote_ssh_client.close()
    # Close this SSHClient and its underlying Transport


And how is this script different than the usual way of login using SSH when username and password are given.  In this script, I have told SSH to look for private key files of the mentioned user.  You'd have noticed that I have not provided a password to the connect function.  Instead, I am sending a parameter named look_for_keys along with value True.  This makes a search of discoverable private key files in ~/.ssh/ and if found, it is used for login to the remote system.


What if we were using Spur module instead of Paramiko?  Spur module does provide the functionality that we are looking for.  Instead of sending a password, we could mention our private key file using argument private_key_file.  Or we could pass the optional argument look_for_private_keys, in case name of private key is not known beforehand.  Here is an example.

import spur

remote_system = 'your.ip.address.here'
remote_user = 'jdoe'
remote_port = 22
remote_cmd = 'ls'

remote_shell = spur.SshShell(
    hostname = remote_system,
    port = remote_port,
    username = remote_user,
    look_for_private_keys = True,   # Search for discoverable private key files in ~/.ssh/
)

remote_result = remote_shell.run([remote_cmd])
    # Execute the given command

print (remote_result.output)
    # Display the output obtained from executing the given command


And if you are wondering how to do passwordless SSH setup, well there are plenty of HOW-TOs available all over the Internet.