সার্ভার থেকে এসএসএইচ, কমান্ড চালানো, এবং সংযোগ বজায় রাখা


12

আমি একটি স্ক্রিপ্ট লিখতে চাই যা বিভিন্ন ট্যাব সহ একটি টার্মিনাল খুলবে, sshপ্রতিটি ট্যাবে ব্যবহার করে একটি সার্ভারে লগন করুন এবং প্রতিটি ট্যাবে একটি কমান্ড চালান। উদাহরণস্বরূপ: htop

নীচের স্ক্রিপ্টটি সার্ভারে লগ ইন করা 4 টি ট্যাব সহ একটি টার্মিনাল খোলে। তবে আমি যদি লাইনে htopকমান্ড যুক্ত করার চেষ্টা করি তবে এটি cmd=আর কাজ করে না ...

#bin/bash

tab="--tab"
cmd="bash -c 'ssh user@host';bash"
foo=""

for i in 1 2 3 4; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

আমি এটি চেষ্টা করেছি ...

cmd="bash -c 'ssh user@host htop';bash"

... কারণ ssh --helpবলেছেন যে এর বাক্য গঠনটি sshহ'ল:

ব্যবহার: ssh [ব্যবহারকারী @] হোস্টনাম [কমান্ড]

উত্তর:


14

এর সহজতম আকারে:

ssh -t user@host "command; bash"

-tএখানে সমালোচনা অংশ। এটি হোস্টকে প্রক্রিয়ায় ভার্চুয়াল টার্মিনাল বরাদ্দ করতে বাধ্য করে, যা এটি উন্মুক্ত থাকতে দেয়।

আপনি যদি কেবলমাত্র সার্ভারের একটি লোডে হট্প চালাতে চান তবে আপনি শেষেটি বাদ bashদিতে পারেন তবে এর অর্থ এই নয় যে আপনি যদি হটোপটি ছেড়ে দেন তবে আপনি স্থানীয় টার্মিনালে ফিরে যাবেন।


আমি cmd = "bash -c 'ssh -t ব্যবহারকারী @ হোস্ট htop'; বাশ" চেষ্টা করেছি। এটি কাজ করে তবে আমি এইচটিপি ছেড়ে দিলে আমি স্থানীয় টার্মিনালে ফিরে যাই এবং আমি এটিটি চাই না
লাল

1
@ রেড আপনার কোটগুলি পরীক্ষা করুন - সেগুলি পুরো জায়গা জুড়ে রয়েছে - আপনাকে hops গ্রুপ করে বাশ করতে হবে যাতে তারা উভয়ই দূরবর্তী সার্ভারে চালিত হয়। bash -c 'ssh -t user@host "htop;bash"'আরও ভাল হবে তবে আমি দেখতে পাচ্ছি না কেন আপনি প্রথমে ব্যাশের মোড়কে এই জিনিসটি ভাজার চেষ্টা করছেন। এটি প্রয়োজন নেই - আপনি কেবল স্থানীয়ভাবে একটি কমান্ড চালাচ্ছেন।
অলি

আপনাকে ধন্যবাদ, এখন এটি cmd = "ssh -t ব্যবহারকারী @ হোস্ট htop; বাশ"
লাল

একটি ভাল উত্তর, তবে শেষ না করার জন্য ব্যাশের চেয়ে আরও ভাল কিছু ব্যবহার করা উচিত।
এমসি 0 ই

@ এমসি 0 আপনি কী করতে চান তা নির্ভর করে। আপনার কমান্ডটি চালানোর পরে দরকারী শেলটি সম্পর্কে এই প্রশ্নটি আরও। আপনি শুধু বিরাম চান, আপনি প্রতিস্থাপন পারে bashজন্য read
অলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.