এসএসএইচ সংযোগে কমান্ডের পরে স্থানীয় কম্পিউটারে শব্দ বাজানো


4

আমি একটি sshসংযোগে আছি এবং কমান্ডটি শেষ হওয়ার পরে আমি (যেখানে আমি সংযুক্ত হয়েছি এমন সার্ভারে নয়) একটি শব্দ বাজাতে চাই।

কিছু:

ssh me@somewhere.com
make && play-sound-local

আমি অন্তর্নির্মিত পিসি-স্পিকার অক্ষম করেছি তাই echo -e "\a"কাজ করে না।

কোনও পরামর্শ?


উত্তর:


1

নেটওয়ার্ক সংযোগের অনুমতি দেওয়ার জন্য আপনি পালস অডিওকে কনফিগার করতে পারেন, তারপরে paplay -sssh সংযোগের মাধ্যমে অডিও ফিরে প্রেরণে ssh পোর্ট ফরওয়ার্ডিং এবং দূরবর্তী দিকে ব্যবহার করুন । নোট করুন যে অডিওটির বিশ্বস্ততা এবং সংযোগের গতির উপর ভিত্তি করে অডিও বিলম্বিত হতে পারে বা তোলা হতে পারে।


1

আদিম সার্ভার সেট আপ করুন (উদাহরণস্বরূপ, বন্দরে 1234) যে কেউ যখন সংযোগ করে তখন স্থানীয় কম্পিউটারে শব্দ বাজায় এবং সেই পোর্টটি দূরবর্তী সার্ভারে ফরোয়ার্ড করে।

স্থানীয় মেশিনে:

nc -l -p 1234 -e "mplayer sound.ogg"

তারপর

ssh -L 1234:localhost:12345 me@somewhere.com
make && nc localhost 12345

PS: আপনি ব্যর্থ হওয়া সত্ত্বেও অবহিত হতে চান কিনা তার ;পরিবর্তে আপনার ব্যবহার করা উচিত &&


1

(এটি কিছু সংশোধন সহ @ xzfc এর উত্তর ))

  1. ncatআপনার ক্লায়েন্ট এবং সার্ভার মেশিনে ইনস্টল করুন। কারণ ncসাধারণ বিতরণে (দেবিয়ান, উবুন্টু) আমাদের প্রয়োজন কমান্ড ( -c/ -e) সম্পাদন করার বিকল্প নেই ।

    apt install nmap
    
  2. আপনার স্থানীয় মেশিনে, এমন একটি সার্ভার সেট আপ করুন যা কোনও সংযোগ স্থাপনের পরে শব্দটি বাজানোর জন্য একটি কমান্ড কার্যকর করবে:

    ncat --sh-exec "paplay /usr/share/sounds/freedesktop/stereo/complete.oga" \
      --keep-open --listen localhost 10009
    

    অথবা সমতুল্য শর্টহ্যান্ড কমান্ডটি ব্যবহার করুন:

    ncat -klc "paplay file.oga" localhost 10009
    
  3. আপনার দূরবর্তী হোস্টের মধ্যে এসএসএইচটি এমনভাবে করুন যাতে রিমোট হোস্টের পোর্ট 10008 থেকে আপনার স্থানীয় মেশিনে 10009 পোর্টে বিপরীত সুড়ঙ্গ স্থাপন করা হয় (যেখানে আপনার সার্ভারটি শুনছে):

    ssh -R 10008:localhost:10009 me@somewhere.com
    
  4. আপনার makeকমান্ডটি এসএসএইচ শেলের নীচে কার্যকর করুন:

    make; ncat --idle-timeout 1s localhost 10008
    

কিভাবে এটা কাজ করে

makeকমান্ডের পরে (সফল হোক বা না) ncatকমান্ডটি রিমোট হোস্টে 10008 পোর্টের সাথে একটি সংযোগ স্থাপন করে, যা এসএসএইচ আপনার স্থানীয় মেশিনে 10009 পোর্টে ফরোয়ার্ড করে, যেখানে সংযোগটি তৈরি হওয়ার পরে আপনার সার্ভার শুনবে এবং একটি শব্দ বাজবে। সংযোগ স্থাপনের পরে, আমাদের আর এটির প্রয়োজন নেই, তাই এটি পরে বন্ধ হয়ে যায় --idle-timeout 1s। এটি "ঝুলন্ত" ncatকমান্ডের পরিবর্তে শেল প্রম্পটটি আবার দেখাবে , এটি আপনার এসএসএইচ কমান্ড চেইনটি সত্যিই শেষ হয়ে গেছে তা স্পষ্ট করে তুলবে ।

আপনার স্থানীয় মেশিন এবং রিমোট মেশিনের মধ্যে কোনও রাউটার / ফায়ারওয়াল / NAT সত্ত্বেও এসএসএইচের বিপরীত টানেলিংটি এই কাজটি করে। (অন্যথায় আপনাকে আপনার রাউটারে পোর্ট ফরওয়ার্ডিং বিধিগুলি সেট করতে হবে, বা একটি স্থানীয় মেশিন ইন্টারনেটের সংস্পর্শে থাকতে হবে))

নিরাপত্তা

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

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