Rsync .bashrc এর সাথে বেমানান বলে মনে হচ্ছে (কারণ "আপনার শেলটি কি পরিষ্কার?")


16

এটি দেখা যাচ্ছে যে .yshnc ফাইলটি রিমোট সার্ভারের সাথে কাজ করতে পারে না?

স্থানীয় ক্লায়েন্টে আমি যখন আরএসএনসি চালাতে পারি তখন:

protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(180) [sender=3.0.7]

সার্ভারে .bashrc অপসারণের ফলে এখানে সমস্যার সমাধান হয়েছে suggested .Bashrc ফাইলটি (অস্থায়ীভাবে) অপসারণ না করে কীভাবে এটি সমাধান করবেন?


1
এই অ্যাকাউন্টের জন্য ssh সক্ষম আছে কিনা তা পরীক্ষা করে দেখুন।
ল্যামি

নীচের উত্তরগুলি সম্ভবত ভুল। আমার .bashrc ফাইলগুলিতে কিছুই পরিবর্তিত না হওয়া সত্ত্বেও একটি রুটিন উবুন্টু আপগ্রেড করার পরে আমি সম্প্রতি এই ত্রুটি পেতে শুরু করেছি।
সেরিন

না - .bashrc ফাইলটি অপসারণ করা যদি এটি ঠিক করে দেয় (যেমন এই প্রশ্নে বলা হয়েছিল), তবে সমস্যাটি .bashrc থেকে আউটপুট। একটি আপগ্রেড অবশ্যই একটি প্রকৃত প্রোটোকল অসম্পূর্ণতা প্রবর্তন করতে পারে, যা সম্পূর্ণ ভিন্ন সমস্যা।
র্যান্ডল

উত্তর:


21

যদি .bashrcরিমোট সার্ভারটি টার্মিনালে কিছু আউটপুট করে তবে আপনি সমস্যার মধ্যে পড়তে পারেন। Rsync এটি আশা করতে পারে না এবং ফলস্বরূপ সমস্যা হতে পারে।

আপনি .bashrcআউটপুট পাঠ্যের যে কোনও আদেশ মুছে ফেলতে বা / আউটপুট / নালকে যে কোনও আউটপুট পাইপ দিয়ে এটি ঠিক করতে পারেন ।


3
সুতরাং আমি কীভাবে কোনও ক্লায়েন্টে ফাইলগুলি সংশোধন করতে পারি তবে / আউটপুট / নালকে কোনও আউটপুট কীভাবে পাইপ করব?
গণপরিচয়তা

1
আমার ধারণা আপনি সহায়তার জন্য আপনার সিস্টেম প্রশাসক হিসাবে পারেন could আপনি সার্ভারের অন্য কোনও উপায়ে যেমন এফটিপি বা এসসিপি ফাইলগুলি পরিবর্তন করতে সক্ষম হতে পারেন।
গ্রেগ হিউগিল

হ্যাঁ আমার .bashrc ফাইলে একটি প্রতিধ্বনি রয়েছে "*** রুট শেল শুরু করা হচ্ছে ***" এবং প্রতিধ্বনি "(যখনই সম্ভব হয় মূল শেলের পরিবর্তে সুডো ব্যবহার করুন!)"। এই প্রতিধ্বনিগুলি সরানো সমস্যার সমাধান করেছে।
কেনটগ্রভ

1
আরএসআইএনসি ম্যান পৃষ্ঠা থেকে: "প্রোটোকল সংস্করণ মেলে না - আপনার শেলটি কি পরিষ্কার?" এই বার্তাটি সাধারণত আপনার স্টার্টআপ স্ক্রিপ্ট বা রিমোট শেল সুবিধার কারণে হয়ে থাকে যে স্ট্রিমটিতে অযাচিত আবর্জনা তৈরি করা হয় যা আরএসসিএনসি তার পরিবহণের জন্য ব্যবহার করছে। এই সমস্যাটি সনাক্ত করার উপায়টি হ'ল আপনার দূরবর্তী শেলটি এভাবে চালানো: ssh ਰਿমোটহস্ট / বিন / ট্রু> আউট.ড্যাট তারপরে আউট.ড্যাট ফাইলটি দেখুন। যদি সবকিছু সঠিকভাবে কাজ করে থাকে তবে আউট.ডেটটি শূন্য দৈর্ঘ্যের ফাইল হওয়া উচিত।
কেনটগ্রভ

8

.Bashrc আউটপুট উত্পন্ন করার জন্য সঠিক জায়গা নয়, কারণ এটি এই ধরণের সমস্যা সৃষ্টি করে। যদিও তারা আরএসসিএনসি চালানোর চেষ্টা না করে :-) অনেক লোক এটিকে নিয়ে পালিয়ে যায়

যে কোনও পছন্দসই আউটপুট (এবং সম্পর্কিত যুক্তি এবং আদেশগুলি) ফাইলের মধ্যে পার্থক্য সম্পর্কে আরও আলোচনার জন্য (। উদাহরণস্বরূপ, সার্ভার ফল্ট প্রশ্ন ".প্রফাইল বনাম .বাশ_প্রোফাইল বনাম .bashrc" ) এ সরানো উচিত )।

এইভাবে, আপনি লগইন করার সময় আউটপুট পাওয়ার ত্যাগ করার প্রয়োজন হবে না, বা আপনি যখন আরএসসিএনসি ব্যবহার করতে চান তখন আপনার .bashrc এ অস্থায়ী পরিবর্তন করার বিষয়ে ডিল করতে হবে না।


6

আমি আমার ব্যবহারকারী অ্যাকাউন্টগুলিতে সর্বদা .bashrc ফাইল রেখেছি এবং রুট অ্যাকাউন্টটি ব্যবহার করে আমার সার্ভারে কিছুটা আর সিএনসি করার চেষ্টা না করা অবধি এই সমস্যাটি কখনই ছিল না। আপনার পোস্টটি সমাধান পেতে আমাকে সহায়তা করেছে:

এই জাতীয় সমস্যা রোধ করতে আমার $ ব্যবহারকারী / .bashrc ফাইলগুলি সর্বদা নিম্নলিখিত বিভাগের সাথে শুরু হয়। আমি এটিকে মূলের .bashrc এ প্রতিলিপি করেছি এবং এখন আর CSSying একটি কবজির মতো কাজ করে!

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

এইচটিএইচ, কার্সটেন


এটি সাধারণত কাজ করে না rsync, কারণ এটি "ইন্টারেক্টিভ শেল" হিসাবে শ্রেণিবদ্ধত যে কোনও কারণেই। তবে যাইহোক এটি যুক্ত করার জন্য একটি ভাল লাইন, কারণ এটি যদি কোনও আউটপুট না থাকে তবে এটি অ-ইন্টারেক্টিভ শেলগুলি স্ক্রু করতে পারে।
মাইকেল শুবার্ট

আমি মনে করি এটিই প্রশ্নের সেরা সমাধান। গ্রহণযোগ্য উত্তর ".bashrc যে কোনও আউটপুট পাঠ্য আউটপুট পাঠ্য" তে কোনও কমান্ড অপসারণ করা ব্যবহারিক নয়।
কিনসী

4

জন্য জটিল কারণে rsync / scp কমান্ড / SFTP রান .bashrc যখন অন্য হোস্টে সংযুক্ত হওয়ার। আপনার .bashrc এর শীর্ষে আপনার এই কমান্ডগুলির অবশ্যই থাকতে হবে :

পারেন

[[ $- != *i* ]] && return

অথবা

[ -z "$PS1" ] && return

উপরের যে কোনও কমান্ড কেবলমাত্র ইন্টারেক্টিভ সেশনগুলির জন্য .bashrc কমান্ডের বাকীটি প্রয়োগের অনুমতি দেবে । যতদূর আমি জানি যে অন্য কোনও ধরণের সেশনের জন্য আপনার তাদের দরকার নেই (এবং প্রকৃতপক্ষে আমি আর্চ এবং ডেবিয়ানের ডিফল্ট বাশার্ককে তাদের বাশার্কে এই কৌশলটি ব্যবহার করে দেখেছি)।

তবে আপনি যদি আপনার বাশার্ক কমান্ডগুলি অ ইন্টারেক্টিভ সেশনগুলির জন্য চালিয়ে দেওয়া সম্পর্কে অতিরিক্ত বিতর্কিত হতে চান তবে আপনার বাশার্কের যে আদেশগুলি ( রেফারেন্স ) এর মতো আউটপুট উত্পন্ন করে তাদের কমপক্ষে মোড়ানো উচিত যাতে তারা কেবল ইন্টারেক্টিভ সেশনে চালিত হয়:

if shopt -q login_shell; then
    # this is an interactive session, we _can_ display output
    ...code that produces output goes here...
fi

নোট করুন যে অন্যরা আপনার বাশ_প্রোফাইলে আউটপুট পাঠ্য আউটপুট পাঠানোর পরামর্শ দেয় তবে এটি সর্বদা ভাল কিনা তা সম্পর্কে আমার সন্দেহ আছে ( কারণগুলির জন্য এখানে ব্যাখ্যা করা হয়েছে )

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