বাশে একাধিক কমান্ড চালানোর এবং চালানোর সর্বোত্তম উপায় কী?


349

আমার ইতিমধ্যে একটি এসএস এজেন্ট সেট আপ আছে এবং আমি বাশ স্ক্রিপ্টে কোনও বাহ্যিক সার্ভারে কমান্ডগুলি চালাতে পারি যেমন:

ssh blah_server "ls; pwd;"

এখন, আমি সত্যিই যা করতে চাই তা হ'ল বাহ্যিক সার্ভারে প্রচুর দীর্ঘ কমান্ড চালানো। উদ্ধৃতি চিহ্নগুলির মধ্যে এই সমস্তগুলি আবদ্ধ করা বেশ কুরুচিপূর্ণ হবে এবং আমি এটিকে এড়াতে সত্যিই একাধিকবার ছাঁটাই করা এড়াতে চাই।

সুতরাং, আমি বন্ধনীর সাথে জড়িত হয়ে কোনও কিছুর মধ্যে কিছু করতে পারি কি কিছু? আমি এর লাইনে কিছু খুঁজছি:

ssh blah_server (
   ls some_folder;
   ./someaction.sh;
   pwd;
)

মূলত, যতক্ষণ না এটি পরিষ্কার থাকে আমি কোনও সমাধানে খুশি হব।

সম্পাদন করা

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

ssh blah_server "ls some_folder; ./someaction.sh 'some params'; pwd; ./some_other_action 'other params';"

কারণ এটি অত্যন্ত কুরুচিপূর্ণ এবং পড়া কঠিন।


2
হুম, সার্ভারে একটি স্ক্রিপ্টে সমস্ত কীভাবে রাখা এবং কেবলমাত্র একটি sshঅনুরোধের সাথে এটি কল করা যায় ?
নিকোলাই ফেটিসসোভ

@Nikolai যদি কমান্ড ক্লায়েন্ট সাইড উপর নির্ভর করে, তারা একটি শেল স্ক্রিপ্ট, তারপর মধ্যে লেখা যেতে পারে scp, sshএবং রান। এই পরিষ্কার উপায় হবে, আমি মনে করি।
খচিক

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

শ্রেষ্ঠ উপায় ব্যবহার ব্যাশ কিন্তু পার্ল, পাইথন, রুবি, ইত্যাদি নয়
সালভা

1
আপনি কেন উদ্ধৃতিতে দূরবর্তী কমান্ডগুলি এড়াতে চান? আপনার যতটুকু পছন্দ মুদ্রার ভিতরে নতুন লাইন থাকতে পারে; এবং স্ট্যান্ডার্ড ইনপুটের পরিবর্তে স্ট্রিং ব্যবহার করা মানে স্ট্যান্ডার্ড ইনপুট যেমন দূরবর্তী স্ক্রিপ্টে ইনপুট পড়ার জন্য উপলব্ধ। (যদিও ইউনিক্সে, একক উদ্ধৃতি সাধারণত ডাবল উদ্ধৃতিগুলির চেয়ে বেশি পছন্দ করা উচিত, যদি না আপনার স্ট্রিংয়ের কিছু অংশ মূল্যায়নের জন্য স্থানীয় শেলের প্রয়োজন হয়।)
ট্রিপলই

উত্তর:


456

এখানে কীভাবে দস্তাবেজ সম্পর্কে :

ssh otherhost << EOF
  ls some_folder; 
  ./someaction.sh 'some params'
  pwd
  ./some_other_action 'other params'
EOF

মন্তব্যগুলিতে @ গ্লোবাল্জের দ্বারা বর্ণিত সমস্যাগুলি এড়াতে আপনি প্রথম স্রোতের পরিবর্তে (দূরবর্তী সাইটে কী করছেন তার উপর নির্ভর করে) আপনি সক্ষম হতে পারবেন

ssh otherhost /bin/bash << EOF

নোট করুন যে আপনি এখানে নথিতে পরিবর্তনশীল প্রতিস্থাপন করতে পারেন, তবে আপনাকে উদ্ধৃতি সংক্রান্ত সমস্যাগুলি মোকাবেলা করতে হতে পারে। উদাহরণস্বরূপ, আপনি যদি "সীমাবদ্ধ স্ট্রিং" (উদাহরণস্বরূপ EOFউপরের অংশে) উদ্ধৃতি করেন তবে আপনি পরিবর্তনশীল বিকল্পগুলি করতে পারবেন না। সীমাবদ্ধতার স্ট্রিং উদ্ধৃত না করে, ভেরিয়েবলগুলি প্রতিস্থাপন করা হয়। উদাহরণস্বরূপ, আপনি যদি $NAMEশেল স্ক্রিপ্টে উপরের সংজ্ঞা দিয়ে থাকেন তবে আপনি করতে পারেন

ssh otherhost /bin/bash << EOF
touch "/tmp/${NAME}"
EOF

এবং এটি otherhostআপনাকে যে কোনও দায়িত্ব অর্পণ করেছে তার নামের সাথে গন্তব্যে একটি ফাইল তৈরি করবে $NAME। শেল স্ক্রিপ্ট উদ্ধৃতি সম্পর্কিত অন্যান্য বিধিগুলিও প্রযোজ্য, তবে এখানে প্রবেশ করা খুব জটিল।


6
আমি দেখতে চাই ঠিক এই মত! এটা কেমন চলছে? আপনি কি এমন কোনও পৃষ্ঠার লিঙ্ক রয়েছে যা এটি ব্যাখ্যা করে?
এলি

9
+1 আমি নিজেই ভাবছিলাম - এটি সম্পর্কে পড়ার জন্য এখানে একটি জায়গা: tldp.org/LDP/abs/html/here-docs.html
bosmacs

14
আমি আমার স্থানীয়টিতে এই আউটপুটটিও পাই: সিউডো-টার্মিনাল বরাদ্দ দেওয়া হবে না কারণ স্টিডিন কোনও টার্মিনাল নয়।
গ্লোবালজ

14
কমান্ড লাইনের সম্প্রসারণ রোধ করার জন্য আপনার কাছে শব্দটি (অর্থাত্ প্রথম 'ইওএফ') উদ্ধৃত করা গুরুত্বপূর্ণ হতে পারে । দেখুন: মানুষ বাশ | কম + / 'এখানে ডকুমেন্টস'

6
পল, আমি কেবল এটির পরামর্শ দিচ্ছি কারণ এই প্রশ্নটিতে প্রায় 200k মতামত নিয়ে মনে হচ্ছে এসএসএস দিয়ে স্ক্রিপ্ট করার সময় অনেক লোক এখানে আসছেন। স্ক্রিপ্টিংয়ের সময় মানগুলি ইনজেক্ট করা সাধারণ common অন্যান্য প্রশ্ন এবং মন্তব্যে গোলমালের জন্য না হলে আমি কেবল একটি তৈরি করব এবং আমার পথে যাব, তবে এই পর্যায়ে এটি দেখা সম্ভব হয় না। একটি লাইন পাদটীকা লোকদের কিছু বড় মাথাব্যথা বাঁচাতে পারে।
কোয়া

122

আপনার স্ক্রিপ্ট স্থানীয়ভাবে সম্পাদনা করুন, তারপরে এটি ssh এ পাইপ করুন, যেমন

cat commands-to-execute-remotely.sh | ssh blah_server

commands-to-execute-remotely.shউপরে যেখানে আপনার তালিকার মতো দেখাচ্ছে:

ls some_folder
./someaction.sh
pwd;

7
এটির দুর্দান্ত সুবিধা রয়েছে যা আপনি জানেন যে দূরবর্তী স্ক্রিপ্ট দ্বারা ঠিক কী সম্পাদিত হচ্ছে - উদ্ধৃতিতে কোনও সমস্যা নেই। আপনার যদি ডায়নামিক কমান্ডগুলির প্রয়োজন হয় তবে আপনি সাব-শেল সহ একটি শেল স্ক্রিপ্ট ব্যবহার করতে পারেন, তবুও এসএসএসে পাইপ করছেন, যেমন ( echo $mycmd $myvar ; ...) | ssh myhost- বিড়াল ব্যবহারের সাথে আপনি ঠিক জানেন যে ssh কমান্ড প্রবাহে কী চলছে। এবং অবশ্যই স্ক্রিপ্টের সাবশেলটি
লিনাক্সজার্নাল /

6
আপনি কি যুক্তি দিয়ে এটি করতে পারেন commands-to-execute-remotely.sh?
elaRosca

1
আমি মনে করি এটি পল্টোম্বলিন সমাধানের চেয়ে অনেক বেশি কার্যকর। যেহেতু স্ক্রিপ্টটি ফাইলটি না খালিই কোনও এসএস সার্ভারে পুনঃনির্দেশিত করা যেতে পারে। এছাড়াও এটি অনেক বেশি পাঠযোগ্য।
প্যাট্রিক বাসুত

3
হ্যাঁ, তবে ইকো বা একটি এখানে নথি ব্যবহার করে (শীর্ষ উত্তর দেখুন): $localvarস্থানীয়ভাবে সংজ্ঞায়িত ভেরিয়েবলের \$remotevarব্যাখ্যা করতে , দূরবর্তী অবস্থান থেকে সংজ্ঞাযুক্ত ভেরিয়েবলটির \$(something with optionnal args)ব্যাখ্যা করতে, দূরবর্তী সার্ভারে কোনও কিছু নির্বাহের আউটপুট পেতে। একটি উদাহরণ যা আপনি 1 এর মাধ্যমে এসএস করতে পারেন (বা যেমন এখানে দেখানো হয়েছে, একাধিক ssh কমান্ড):echo " for remotedir in /*/${localprefix}* ; do cd \"\$remotedir\" && echo \"I am now in \$(pwd) on the remote server \$(hostname) \" ; done " | ssh user1@hop1 ssh user2@hop2 ssh user@finalserver bash
অলিভিয়ার দুলাক

2
হুম ... কীভাবে ইনপুট পুনঃনির্দেশ ব্যবহার করা থেকে এটি আলাদা ssh blah_server < commands-to-execute-remotely.sh?
ফ্লো 2 কে

41

আপনার নমুনা কোডটি মেলানোর জন্য, আপনি আপনার আদেশগুলি একক বা ডাবল কউউটের ভিতরে মোড়াতে পারেন। উদাহরণ স্বরূপ

ssh blah_server "
  ls
  pwd
"

আমি এই ফর্ম্যাটটি পছন্দ করি, তবে এটি দুঃখের সাথে বলতে গেলে std ডেটা ভেরিয়েবলের মধ্যে সঞ্চয় করার জন্য কার্যকর নয়।
স্বাক্ষর

1
সাইনাস, "স্টোরের ডেটা ভেরিয়েবলে স্টোর করে" বলতে কী বোঝ?
Andrei বি

1
@ সিগনাস আপনি যা বর্ণনা করেছেন তা করা পুরোপুরি সম্ভব, যদিও আপনি সম্ভবত রিমোট কমান্ডের আশেপাশে ডাবল উদ্ধৃতিগুলির পরিবর্তে একক উদ্ধৃতি ব্যবহার করতে চান (বা আপনার স্থানীয় শেলকে বাধা দেওয়া থেকে বাঁচাতে এবং অপারেটরদের পালাতে হবে যা ডাবল উদ্ধৃতিতে রক্ষা পেতে হবে) তাদের interpolating)।
ট্রিপলি

আমি এই ফাইলটিওরোমো = $ (ডাবল।-টাইপ এফ-নাম 'xxx.war') এর মতো ডাবল কোট কোডের ভিতরে রাখতে পারি না। fileToRemove এর ভিতরে একটি ফাইলের নাম থাকা উচিত তবে পরিবর্তে এটির একটি খালি স্ট্রিং থাকে। কিছু পালাতে হবে?
jkonst

37

আমি দুটি উপায় দেখতে পাচ্ছি:

প্রথমে আপনি এটির মতো নিয়ন্ত্রণ সকেট তৈরি করুন:

 ssh -oControlMaster=yes -oControlPath=~/.ssh/ssh-%r-%h-%p <yourip>

এবং আপনার আদেশগুলি চালান

 ssh -oControlMaster=no -oControlPath=~/.ssh/ssh-%r-%h-%p <yourip> -t <yourcommand>

এইভাবে আপনি সার্ভারের সাথে পুনরায় সংযোগ না করেই ssh কমান্ড লিখতে পারেন।

দ্বিতীয়টি হ'ল স্ক্রিপ্টটি গতিময়ভাবে জেনারেট করা, scpএটি এনিং করা এবং চলমান।


20

এটি নিম্নলিখিত হিসাবেও করা যেতে পারে। আপনার কমান্ডগুলি একটি স্ক্রিপ্টে রাখুন, এর নাম-কমান্ডের নাম দিন inc

#!/bin/bash
ls some_folder
./someaction.sh
pwd

ফাইলটি সংরক্ষণ করুন

এখন এটি রিমোট সার্ভারে চালান।

ssh user@remote 'bash -s' < /path/to/commands-inc.sh

আমার জন্য কখনও ব্যর্থ হয় নি।


আমি মূলত যা ভাবছিলাম তার সাথে মিল! তবে কেন bash -sদরকার?
ফ্লো 2 কে

এছাড়াও, #!/bin/bashসত্যই ব্যবহৃত হয়?
ফ্লো 2 কে

2
-এসটি সামঞ্জস্যের জন্য রয়েছে। ম্যান বাশ-গুলি থেকে যদি -s বিকল্প উপস্থিত থাকে বা বিকল্প প্রক্রিয়া করার পরে যদি কোনও যুক্তি না থেকে থাকে, তবে কমান্ডগুলি স্ট্যান্ডার্ড ইনপুট থেকে পঠিত হবে। এই বিকল্পটি ইন্টারেক্টিভ শেলটি চালিত করার সময় অবস্থানগত পরামিতিগুলি সেট করার অনুমতি দেয়।
আরজে

1
আরজে, ধন্যবাদ! আমার প্রথম মন্তব্য সহ, দেখে মনে হচ্ছে আমরা ঠিক করি ssh user@remote < /path/to/commands-inc.sh(এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে)। ঠিক আছে, আমি অনুমান করি যে আপনার সংস্করণটি নিশ্চিত করে যে আমরা bashশেলটি ব্যবহার করি , এবং অন্য কোনও শেল নয় - এটি উদ্দেশ্য, তাই না?
ফ্লো 2 কে

2
ধন্যবাদ। হ্যাঁ, আমাদের মধ্যে কারও কাছে আমাদের নোটগুলি এবং বাশ এবং অন্যান্য শেলের পুরানো সংস্করণগুলির অভ্যাস রয়েছে। :-)
আরজে

10

সমস্ত কমান্ড একটি স্ক্রিপ্টে রাখুন এবং এটি চলতে পারে

ssh <remote-user>@<remote-host> "bash -s" <./remote-commands.sh

কিছুটা বিজোড় তবে এটি ভালভাবে কাজ করে। এবং স্ক্রিপ্টগুলিতে আরগগুলি পাস করা যেতে পারে (হয় পুনঃনির্দেশের আগে বা পরে)। উদাহরণস্বরূপ 'ssh <remote-user> @ <remote-host> "bash -s" আরগ 1 <./ রিমোট- কম্যান্ডস.শ আরজি 2' উদাহরণস্বরূপ 'ssh <remote-user> @ <remote-host> "বাশ-এস" - - -আরগ 1 <./ রিমোট- কম্যান্ডস.শ আরজি 2 '
গাইতে

আমার উপরের অন্য একটি উত্তরের সাথে একই প্রশ্ন ছিল, তবে অন্তর্ভুক্ত করার উদ্দেশ্য কী bash -s?
ফ্লো 2 কে

1
@ ফ্লো 2 কে-এস হ'ল স্ট্যান্ডার্ড ইনপুট থেকে কমান্ডগুলি পড়ার জন্য বাশকে নির্দেশ করা। manপৃষ্ঠাগুলি থেকে এখানে বিবরণ দেওয়া হয়েছেIf the -s option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell.
জয় প্রকাশ

@ জয়প্রকাশ এর জন্য ধন্যবাদ, তবে আমি আসলে ভাবছিলাম যে আমরা যদি bashকমান্ডটি পুরোপুরি পুরোপুরি বন্ধ করতে পারি , তবে ssh remote-user@remote-host <./remote-commands.sh। আমি আমার চেষ্টা করেছিলাম এবং এটি কাজ করার মতো মনে হয়েছে, যদিও এটি কোনওভাবেই এর অভাব আছে কিনা তা সম্পর্কে আমি নিশ্চিত নই।
ফ্লো 2 কে

@ ফ্লো 2 কে ম্যান পেজগুলি সম্পর্কে আমার উপলব্ধি থেকে সেই বিকল্পটি ছাড়া কোনও অভাব হবে না। আপনি যদি কোনও যুক্তি দিয়ে যাওয়ার চেষ্টা করছেন তবে এটি প্রয়োজনীয়। - ধন্যবাদ
জয় প্রকাশ

9

এসএসএইচ এবং বাশে একাধিক কমান্ড চালান।

একটি স্ট্রিংয়ের মধ্যে সেমিকোলনগুলির সাথে পৃথক পৃথক কমান্ডগুলি প্রতিধ্বনিত হয়েছে, সমস্ত ssh কমান্ডে পাইপ করা হয়েছে। উদাহরণ স্বরূপ:

echo "df -k;uname -a" | ssh 192.168.79.134

Pseudo-terminal will not be allocated because stdin is not a terminal.
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       18274628 2546476  14799848  15% /
tmpfs             183620      72    183548   1% /dev/shm
/dev/sda1         297485   39074    243051  14% /boot
Linux newserv 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

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

প্রশ্ন থেকে, আপনি ওপিকে ঠিক কী এড়াতে চান তা প্রস্তাব দিয়েছিলেন: "আমি দেখতে চাই এমন এক লাইনের সাথে বাশ স্ক্রিপ্ট চাই না ..."
jww

6

আমার মতো এখানে যে কেউ হোঁচট খাচ্ছে তার জন্য - সেমিকোলন এবং নিউলাইনটি পালাতে আমার সাফল্য ছিল:

প্রথম পদক্ষেপ: সেমিকোলন। এইভাবে, আমরা ssh কমান্ডটি ভাঙ্গি না:

ssh <host> echo test\;ls
                    ^ backslash!

রিমোট হোস্ট / হোম ডিরেক্টরি তালিকাভুক্ত (রুট হিসাবে লগ ইন), যেখানে

ssh <host> echo test;ls
                    ^ NO backslash

বর্তমান ওয়ার্কিং ডিরেক্টরি তালিকাভুক্ত।

পরবর্তী পদক্ষেপ: লাইনটি ভাঙ্গা:

                      v another backslash!
ssh <host> echo test\;\
ls

এটি আবার রিমোট ওয়ার্কিং ডিরেক্টরি তালিকাভুক্ত করেছে - উন্নত বিন্যাস:

ssh <host>\
  echo test\;\
  ls

যদি এখানে ডকুমেন্ট বা ভাঙা লাইনের চারপাশে উদ্ধৃতিগুলির তুলনায় খুব সুন্দর হয় - ভাল, আমাকে সিদ্ধান্ত নিতে হবে না ...

(ব্যাশ, উবুন্টু 14.04 এলটিএস ব্যবহার করে))


1
এর চেয়েও ভাল আপনি কী ব্যবহার করতে পারেন && এবং || এইভাবে, খুব - প্রতিধ্বনি পরীক্ষা \ & \ & ls
মিরো ক্রপাসেক

@ মিরোক্রাপেসেক এটি খুব সুন্দর। উত্তম? আপনি কি চান তার উপর নির্ভর করছে; শর্তসাপেক্ষে দ্বিতীয় কমান্ড চালান , তবে হ্যাঁ, এটি নিঃশর্তভাবে চালান (প্রথমে কেউ সফল হন বা ব্যর্থ হন না কেন) তবে তা নয় ...
অ্যাকনকাগুয়া

@ মিরোক্রাপেসেক, কমান্ডের চারপাশে ডাবল উদ্ধৃতি দেওয়ার সময় আমাকে && এড়াতে হবে না:ssh host "echo test && ls"
not2savvy

5

মাল্টলাইন স্ট্রিং এবং একাধিক ব্যাশ স্ক্রিপ্ট ব্যবহার করে পোস্ট করা উত্তরগুলি আমার পক্ষে কার্যকর হয়নি।

  • দীর্ঘ মাল্টলাইন স্ট্রিংগুলি বজায় রাখা শক্ত।
  • পৃথক বাশ স্ক্রিপ্টগুলি স্থানীয় ভেরিয়েবলগুলি বজায় রাখে না।

স্থানীয় প্রসঙ্গটি বজায় রেখে একাধিক কমান্ড চালা এবং চালানোর কার্যকরী উপায় এখানে।

LOCAL_VARIABLE=test

run_remote() {
    echo "$LOCAL_VARIABLE"
    ls some_folder; 
    ./someaction.sh 'some params'
    ./some_other_action 'other params'
}

ssh otherhost "$(set); run_remote"

3
আপনি এটির বিষয়ে ভাবছেন যে কেউ যদি কমান্ড লাইনে বসে থাকে তবে কারও পক্ষে এটি করা একমাত্র কারণ। এই প্রশ্নের অন্যান্য সাধারণ কারণও রয়েছে যেমন রুনডেক, জেনকিনস ইত্যাদি সরঞ্জাম সহ বিতরণ করা পরিবেশে কমান্ড কার্যকর করা
চার্লস অ্যাডিস

এটি কাজ করে তবে আমি অযাচিত ত্রুটি বার্তাগুলি
পাচ্ছি

5

দীর্ঘ কমান্ডগুলির জন্য সবচেয়ে পরিষ্কার তবে নিশ্চিত নয় যে নিশ্চিত:

ssh user@host "cmd1; cmd2; cmd3"

সরলতায় সেরা!
not2savvy

4

এটি অন্যান্য স্ক্রিপ্টগুলি অন্তর্ভুক্ত করতে হবে না বলে এটি স্ক্রিপ্টগুলি তৈরি করতে ভাল কাজ করে:

#!/bin/bash
ssh <my_user>@<my_host> "bash -s" << EOF
    # here you just type all your commmands, as you can see, i.e.
    touch /tmp/test1;
    touch /tmp/test2;
    touch /tmp/test3;
EOF

"$ (যা ব্যাশ করে) -স" অংশটি আপনাকে দূরবর্তী মেশিনের পরিবর্তে স্থানীয় মেশিনে ব্যাশের অবস্থান দেয়। আমি মনে করি আপনি এর পরিবর্তে '$ (যা বাশান) -স' চান (স্থানীয় প্যারামিটার বিকল্পটি দমন করার জন্য একক-কোটস) চান।
jsears

1
পল টমলিন বাশ হিয়ার ডকুমেন্টের উত্তর 6 বছর আগে সরবরাহ করেছিলেন। এই উত্তর দ্বারা কোন মান যুক্ত হয়?
jwww

-sপতাকা, আমি তার উদ্ধৃতি দিয়েছি আপনি প্রথম লাইনটি ... এর সাথে প্রতিস্থাপন করে পালিয়ে যেতে সক্ষম হবেন এবং আমি কেবল বাশকে ডাকতে পেরে উঠতে পারিনি যা আমার মনে আছে মনে আছে।
sjas

4

মাল্টিপ্লেক্সিংয়ের মাধ্যমে ডিফল্টরূপে একক ssh সেশনগুলি ব্যবহার করার জন্য আপনার সিস্টেমকে কনফিগার করার সহজতম উপায়।

এটি সকেটের জন্য একটি ফোল্ডার তৈরি করে করা যেতে পারে:

mkdir ~/.ssh/controlmasters

এবং তারপরে আপনার .ssh কনফিগারেশনে নিম্নলিখিতগুলি যুক্ত করুন:

Host *
    ControlMaster auto
    ControlPath ~/.ssh/controlmasters/%r@%h:%p.socket
    ControlMaster auto
    ControlPersist 10m

এখন, আপনার নিজের কোডটি কোনও পরিবর্তন করার দরকার নেই। এটি একাধিক সেশন তৈরি না করেই একাধিক কলকে এসএসএস এবং স্ক্রিপ করতে দেয়, যা আপনার স্থানীয় এবং দূরবর্তী মেশিনগুলির মধ্যে আরও ইন্টারঅ্যাকশন করার প্রয়োজন হলে কার্যকর হয়।

@ টার্মিনাস এর উত্তর, ধন্যবাদ http://www.cyberciti.biz/faq/linux-unix-osx-bsd-ssh-multiplexing-to-speed-up-ssh-connections/ এবং https://en.wikibooks.org / উইকি / ওপেনএসএসএইচ / কুকবুক / মাল্টিপ্লেক্সিং

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.