বেশিরভাগ ক্ষেত্রে, আপনি একটি বিভ্রান্তিকর "ছদ্ম-টার্মিনাল বরাদ্দ করা হবে না কারণ stdin একটি টার্মিনাল নয়" ত্রুটি পাবেন শুধুমাত্র যখন আপনি একটি স্ক্রিপ্ট থেকে কিছু ধরণের SSH কমান্ড চালাচ্ছেন। আপনি যদি কমান্ড লাইন থেকে একই কমান্ড চালান, তাহলে এটি পুরোপুরি কাজ করতে পারে।
আরও যাওয়ার আগে, নিশ্চিত করুন যে আপনি SSH এজেন্টে আপনার সর্বজনীন কী যোগ করেছেন এবং তারপর আবার ssh ব্যবহার করার চেষ্টা করুন। আপনি এইমাত্র একটি চাবি অনুপস্থিত হতে পারে. অন্যদিকে, যদি এটি কাজ না করে তাহলে আপনাকে আপনার স্ক্রিপ্টে একটু সমস্যা সমাধান করতে হবে।
পদ্ধতি 1:ছদ্ম-টিটি বরাদ্দ জোরপূর্বক এবং নিষ্ক্রিয় করা
কমান্ড লাইন বিকল্পগুলির একটি জোড়া রয়েছে যা আপনার জন্য সমস্যাটি দ্রুত সমাধান করতে পারে। ছদ্ম-টার্মিনাল বরাদ্দ জোর করার জন্য আপনি যা সংযোগ করার চেষ্টা করছেন তার বাকিগুলি অনুসরণ করে ssh -t -t -R চেষ্টা করুন৷ উদাহরণ স্বরূপ, ধরুন আপনি example.com-এ আপনার অ্যাকাউন্টে লগ ইন করতে ssh -p 80 [email protected] ব্যবহার করতে যাচ্ছেন, যা অবশ্যই ডকুমেন্টেশনের জন্য একটি ডামি যা বিদ্যমান নেই।
যেমন চালানোর চেষ্টা করুন ssh -t -t -R -p 80 [email protected] এবং দেখুন এটি সমস্যার সমাধান করে কিনা। সিস্টেমে সফলভাবে লগ ইন করার জন্য আপনাকে অবশ্যই আপনার আসল অ্যাকাউন্ট এবং হোস্টনামের সাথে নামটি প্রতিস্থাপন করতে হবে। এটি একটি টার্মিনালের বরাদ্দ করতে বাধ্য করে, তাই আপনি দেখতে পাবেন না যে ছদ্ম-টার্মিনাল বরাদ্দ করা হবে না কারণ stdin একটি টার্মিনাল ত্রুটি নয়৷
অন্যদিকে, আপনি হয়তো ক্রমাগত ত্রুটি বার্তার স্ট্রিং দিয়ে শেষ করতে পারেন। কিছু ব্যবহারকারী মন্তব্য করেছেন যে এটি মজাদার বলে মনে করা যেতে পারে৷
৷নির্বিশেষে এটি অবশ্যই হতাশাজনক, তাই প্রক্রিয়াটি শেষ করতে Ctrl+C ব্যবহার করুন।
আপনি হয় শুধুমাত্র একটি -t সুইচ ব্যবহার করে বা সংখ্যা বাড়ানোর চেষ্টা করতে পারেন। যদি এটি কাজ না করে, তাহলে কমান্ডে একটি -T সুইচ দিয়ে যেকোনো -t সুইচ প্রতিস্থাপন করুন, যেমন ssh -T -R -p 80 [email protected] এবং দেখুন এটি কাজ করে কিনা।
এই পদ্ধতিটি সম্পূর্ণ ছদ্ম-টার্মিনাল বরাদ্দকরণ প্রক্রিয়াটিকে সম্পূর্ণরূপে নিষ্ক্রিয় করে, তাই এটি এমন ক্ষেত্রে কাজ করতে পারে যেখানে জোর করা হয় না। অবশ্যই, কমান্ড লাইন থেকে এর কোনোটিই সমস্যা হওয়া উচিত নয়, তবে আপনার স্ক্রিপ্ট থেকে কোন বিকল্পটি কাজ করে তা খুঁজে পেলে একটি নোট করতে ভুলবেন না যাতে আপনি উল্লিখিত সার্ভার অ্যাক্সেস করতে আপনাকে যে কোনো ভবিষ্যতের স্ক্রিপ্টে এটি ব্যবহার করতে পারেন।
যেহেতু ssh কমান্ড এই দুটি বিপরীত বিকল্পের একই নাম দিয়েছে, মনে রাখবেন যে -t সিউডো-টার্মিনালের বরাদ্দ করতে বাধ্য করে যখন -T এটি নিষ্ক্রিয় করে। এই বিকল্পগুলি কেস সংবেদনশীল, এবং এগুলি প্রায়শই স্ক্রিপ্টের ভিতরে থেকে প্রয়োজনীয় কারণ ssh-এর কাজ করার জন্য একটি প্রথাগত TTY টার্মিনাল প্রয়োজন। স্বাভাবিকভাবেই, আপনার ক্ষেত্রে আপনি এই উদ্দেশ্যে আপনার টার্মিনাল এমুলেটর ব্যবহার করবেন।
পদ্ধতি 2:sshpass ব্যবহার করা
কিছু লোক দেখতে পারে যে তাদের স্ক্রিপ্টগুলি sshpass কমান্ডের সাথে আরও ভাল কাজ করে, যা ডিফল্টরূপে অন্তর্ভুক্ত নয়। আপনি সর্বদা এটিকে sudo apt-get install sshpass বা sudo yum install sshpass দিয়ে ইনস্টল করতে পারেন যদি আপনি এটি ব্যবহার করে দেখতে চান বা আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে এটির প্রয়োজন হয়।
আপনি যদি ইতিমধ্যে এটি ব্যবহার না করে থাকেন তবে সম্ভবত আপনার এটির প্রয়োজন নেই। তবুও, আপনি এই ধরনের পরিবেশে ছদ্ম-টার্মিনাল বরাদ্দ সংক্রান্ত ত্রুটির বার্তাগুলিকে চমকে দেওয়ার জন্য একই কৌশলগুলি ব্যবহার করতে পারেন৷
উদাহরণস্বরূপ, sshpass -p পাসওয়ার্ড ব্যবহার করুন ssh -T [email protected] আপনার স্ক্রিপ্টের ভিতরে থেকে সিস্টেমকে কাজ করতে বাধ্য করতে৷
পদ্ধতি 3:কাজ পরিচালনার ত্রুটিগুলি ঠিক করা
কখনও কখনও আপনি এই সব ঠিক করার পরেও একটি অন্য ত্রুটি বার্তা পেতে পারেন. আপনি যদি এমন একটি সতর্কবার্তা পান যেটি TT-তে কোনো অ্যাক্সেস নেই এবং তারপরে আপনাকে মনে করিয়ে দেওয়া হয় যে আপনার শেলে কোনো কাজের নিয়ন্ত্রণ নেই আপনার কিছুটা স্বাভাবিকভাবে কাজ করতে সক্ষম হওয়া উচিত।
এই ত্রুটিটি দূরবর্তী সার্ভারে csh, tcsh বা সম্ভবত Almquist বা অন্যান্য শেল সম্পর্কিত কিছু অনিয়মিত হওয়ার কারণে ঘটে। আপনি হয়ত এটি লক্ষ্য করেননি কারণ আপনি অন্যান্য ত্রুটির বার্তা পেয়েছিলেন, তবে শর্ত থাকে যে আপনি ছদ্ম-টার্মিনাল সম্পর্কে অন্য কোনো কিছু দেখতে পাচ্ছেন না, আপনি সাধারণত যেভাবে করেন সেভাবে তুলনামূলকভাবে চালিয়ে যাওয়া সম্ভব।
আপনি প্রক্রিয়াগুলি বন্ধ করার জন্য এই ক্ষেত্রে Ctrl+Z ব্যবহার করার চেষ্টা নাও করতে পারেন, যদিও, কারণ তাদের আবার ব্যাক আপ শুরু করার কোনো উপায় নেই। আপনি যদি একটি ত্রুটি বার্তা পেয়ে থাকেন যাতে লেখা থাকে যে আপনি প্রস্থান করার সময় কাজ বন্ধ হয়ে গেছে, তাহলে আপনাকে লগআউট করার অনুমতি দেওয়া হবে না।
আপনি যে কাজগুলি বন্ধ করতে পারবেন না তা বন্ধ করতে ps এবং হত্যা কমান্ডগুলি ব্যবহার করুন, এই প্রক্রিয়ায় কাজ হারাতে আপনার আপত্তি নেই। আপনি এখন প্রস্থান করতে সক্ষম হবেন।