শেল স্ক্রিপ্ট থেকে পটভূমি প্রক্রিয়া হিসাবে টানেলগুলি কীভাবে পরিচালনা করবেন?


19

শেল স্ক্রিপ্ট থেকে আমার বেশ কয়েকটি এসএস-টানেল স্থাপন করতে হবে। আমি এগুলি ব্যবহার করে বিজি টাস্ক হিসাবে চালানোর চেষ্টা করেছি:

#!/bin/sh
ssh -L 3000:server1:5029 me@server2 &
ssh -L 3001:server3:3306 me@server2 &

তবে আমি যখন সেগুলি চালু করি তখন টানেলগুলি সঠিকভাবে কাজ করবে বলে মনে হয় না।

আমি ম্যানুয়ালি তাদের নিজস্ব ট্যাবগুলিতে সেট আপ করার সময় তারা ঠিকঠাক কাজ করে, তাই আমার পরবর্তী ধারণাটি স্ক্রিপ্টটি টার্মিনালে নতুন ট্যাবগুলি খুলতে হবে এবং সেখানে কমান্ডগুলি অগ্রভূমি প্রক্রিয়া হিসাবে চালিত করে।

দ্রষ্টব্য: এই প্রশ্নটি মূলত "আমি কীভাবে শেল থেকে একটি নতুন টার্মিনাল ট্যাব চালু করব এবং তারপরে এটি একটি কমান্ড চালাব?", তবে টানেলগুলির সাথে সম্পর্কিত সম্পর্কে দুটি উত্তর পেয়েছি। "শেল খোলার" প্রশ্নের জন্য, আমি এটি সুপার ইউজারে পেয়েছি , যা কাজ করবে, যদিও পটভূমিতে নতুন ট্যাবগুলি অগ্রভাগের উইন্ডোটি খোলার চেয়ে পছন্দনীয় হবে।


আপনি কি সার্ভারে একটি সক্রিয় এসএসএইচ সেশন রাখেন? অর্থ, ব্যাকগ্রাউন্ডে আপনার টানেলগুলি রয়েছে এবং আপনি কীভাবে কাজ করছেন এমন একটি অগ্রভাগের এসএসএইচ সেশন রয়েছে?
জ্যাক এম

এখন অবধি, আমি তিনটি ট্যাব খোলা রেখেছি: প্রতিটি টানেলের জন্য একটি, এবং যাহা কিছু জন্য অন্য একটি। আমার আসল কাজগুলির বেশিরভাগ অংশ গ্রহ এবং ব্রাউজারে ঘটে।
স্প্রুগম্যান

(টানেলগুলি কেবলমাত্র তাই আমি আমার স্থানীয়
টোম্যাট

উত্তর:


26

এটি প্রযুক্তিগতভাবে জিজ্ঞাসিত প্রশ্নের উত্তর নয়, বরং বর্ণিত হিসাবে আপনার সমস্যার উত্তর। Ssh কমান্ডটিতে দুটি সুইচ রয়েছে যা আপনার পক্ষে কার্যকর হতে পারে:

ssh -f -N -L 3000:server1:5029 me@server2

কোনও প্রয়োজনীয় পাসওয়ার্ড জিজ্ঞাসা করার জন্য যথেষ্ট দীর্ঘ পর্যায়ে এসএসএসকে অগ্রভাগে ঘোরাফেরা করতে এবং তারপরে পটভূমিতে নিজেকে রেখে দেয়, কোনও রিমোট কমান্ড কার্যকর না করে কেবল টানেলটি পরিচালনা করে।

আপনি যদি সত্যিই এটি কোনও ট্যাবে উপস্থিত হতে চান তবে আপনি অন্যরকম সমাধান চাইবেন।


আমি কীগুলি সেট আপ করেছি, সুতরাং আমার পাসওয়ার্ড প্রবেশের প্রয়োজন নেই, তবে এটি কার্যকর বলে মনে হচ্ছে। ধন্যবাদ! একটি প্রশ্ন: আমি কীভাবে সুরঙ্গগুলি অ্যাক্সেস করব তা দেখতে সময়গুলি শেষ হয়ে গেছে কিনা, বা সেগুলি শেষ করতে হবে ইত্যাদি etc. তাদের জন্য jobsনা psকোনও হ্যান্ডেল তালিকাবদ্ধ করে না ....
স্প্রোগম্যান

2
PS -wwajx | গ্রেপ এসএসএসে আপনাকে প্রক্রিয়াগুলি দেখাতে হবে, তারপরে আপনি উপযুক্ত হিসাবে দেখতে পারেন তবে সেগুলি হত্যা করতে পারেন।
zzz

2
আমি যুক্ত করতে চাই যে আপনি যদি -fপ্রক্রিয়াটি বাদ &দিয়ে শেষের দিকে ব্যাকগ্রাউন্ড করেন তবে $!আপনার স্ক্রিপ্টে পরে টানেল প্রক্রিয়াটি হ্যান্ডেল হিসাবে আপনি পিআইডি পেতে পারেন ।
বিকে 138

6

আমি কেবল আপনার টানেলগুলিকে আপনার "যাই হোক না কেন তার জন্য" সংযোগে সংহত করার পরামর্শ দেব। আপনার ~/.ssh/configফাইলটিতে উপযুক্ত এন্ট্রি যুক্ত করে আপনি এটি সহজ করে তুলতে পারেন :

Host server2
    HostName 10.1.1.1
    User me
    LocalForward 3000 127.0.0.1:5029
    LocalForward 3001 127.0.0.1:3306

তারপরে আপনি কেবল চালিয়ে লগ ইন করতে পারেন:

> ssh server2

টানেলগুলি উঠে আসা এবং কাজ শুরু করা উচিত, আপনাকে একটি একক এসএসএইচ উদাহরণ দিয়ে ছেড়ে দেওয়া উচিত যা "যাই হোক না কেন" করতে হবে। আপনার যদি দ্বিতীয় সংযোগটি খোলার প্রয়োজন হয় তবে আপনি server2একটি ত্রুটি পেতে পারেন, যদিও:

> ssh server2
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3000
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 3001
Could not request local forwarding.

এটি আপনার চোখ ছাড়া অন্য কিছুতে আঘাত করে না। আপনি অন্যান্য সার্ভারের জন্য অনুরূপ লাইন যুক্ত করে একাধিক সার্ভারের জন্য এই ফরোয়ার্ড সেট আপ করতে পারেন এবং এটি সমস্ত স্বয়ংক্রিয়ভাবে ঘটবে।


@ zzz এর উত্তর একই জিনিস কমবেশি কম মনে হচ্ছে এবং কিছুটা সোজা-এগিয়ে রয়েছে। ধন্যবাদ যদিও.
স্প্রুগম্যান

এটি -f -N বিকল্পের সাথে একত্রে এক শটে একাধিক পোর্টের জন্য ফরওয়ার্ডিং সেটআপ করার একটি দুর্দান্ত উপায়। ধন্যবাদ মানুষ.
narsk
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.