আমি যখন সার্ভারে লগইন করি তখন রঙ পরিবর্তন করার জন্য বাশ প্রম্পট দেয়


15

বাশ প্রম্পটকে গতিশীল করার কোনও উপায় কি কোনও সার্ভারে লগ ইন করার সাথে সাথে রঙ পরিবর্তন করে?

তাই আমি চাই যে আমার সিস্টেমে থাকাকালীন রঙটি সবুজ হয়ে উঠুক এবং সার্ভারের সাথে সংযুক্ত হয়ে লাল হয়ে যেতে চাই। আমার কাছে প্রচুর সংখ্যক সার্ভার রয়েছে যা আমি সে সমস্তের চেয়ে আলাদা .bashrcরাখতে চাই না ।


সম্ভবত না. কিন্তু এটা ফিরে superuser.com/questions/33712/...
র্যান্ডম

1
আপনার টার্মিনালটিকে কেন লাল (বা অন্য কোনও রঙ) তৈরি করবেন না যাতে আপনি যখন তাদের সাথে সংযোগ স্থাপন করেন তখন আপনি একটি ডিফল্ট সাদা হয়ে যান?
মনিকা পুনরায় ইনস্টল করুন - ζ--

উত্তর:


9

রিমোট প্রম্পট রিমোট দ্বারা সেট করা হয় ~/.bashrc। সুতরাং আপনাকে এখনও এটি রিমোট সার্ভারে অনুলিপি করতে হবে। তবে আপনি ~/.bashrcসমস্ত হোস্টের জন্য একটি একক ব্যবহার করতে পারেন এবং হোস্টনামের ভিত্তিতে প্রম্পট রঙ সেট করতে পারেন :

[ "$PS1" ] || return 0                           # continue only when interactive
case $(hostname -s) in
laptop*)
    prompt_color='\033[48;5;16m\033[38;5;46m'    # green(46) on black(16)
    ;;
server*)
    prompt_color='\033[48;5;16m\033[38;5;196m'   # red(196) on black(16)
    ;;
esac
ORIG_PS1=$PS1                                    # in case needed
PS1='<\['${prompt_color}'\]\h\[\033[m\]:\w>\$ '
unset prompt_color

মন্তব্য:

  • PS1এটি ইতিমধ্যে সেট না থাকলে সেট করবেন না (যেমন শেলটি ইন্টারেক্টিভ না থাকলে)। PS1শেলটি ইন্টারেক্টিভ কিনা তা নির্ধারণ করার জন্য সাধারণ পরীক্ষাটি শূন্য নয় কিনা তা পরীক্ষা করা খুব সহজ উপায় এবং আপনি যে প্রোগ্রামগুলি করেন তা বিভ্রান্ত করতে চান না। (তর্কসাপেক্ষ একটি আরো সঠিক পরীক্ষা যদি চেক করা হয় $-রয়েছে i।)

  • আপনি যদি কোনও রিমোট সার্ভারে লগ ইন করার সময় এই কোডটি চালিত করতে চান তবে আপনার প্রোফাইল ফাইলগুলির একটি সর্বদা উত্স হিসাবে থাকা উচিত ~/.bashrc। তবে আমি ধরে নিই যে আপনি এটি জানেন।

  • ইন PS1, পালানোর কোডগুলি অবশ্যই আবদ্ধ থাকতে হবে \[...\]

  • \[033[mঅগ্রভাগ এবং পটভূমিকে ডিফল্টতে পুনরায় সেট করে। সুতরাং এখানে, :\wটার্মিনাল অগ্রভাগ / পটভূমিতে প্রদর্শিত হবে।

  • \[033[48;5;XXXm\033[38;5;YYYmপটভূমি / অগ্রভাগ সেট করে XXX/ YYY

  • উপলভ্য রঙগুলিকে ডাম্প দেয় এমন স্ক্রিপ্টের জন্য চেষ্টা করুন colortest

  • প্রম্পটটি দেখতে কেমন তা পরীক্ষা করতে:

    echo -e "<\033[48;5;16m\033[38;5;196mhost\033[m:dir>$ "

7

আপনি যদি না চান (পারবেন না) রিমোটগুলি আলাদা করে রাখতে পারেন PS1, তবে আমি "না" বলব, এটি অন্তত ভয়ঙ্করভাবে কঠিন হবে। একটি এসএসএইচ সংযোগে বিবেচনা করুন যে স্থানীয় পক্ষের শেল প্রম্পট কী এবং অন্য কিছু কী তা সম্পর্কে সত্যিকারের ধারণা নেই এবং তাই প্রম্পটের জন্য রঙ নির্ধারণ করা সত্যিই দূরবর্তী থেকে আসতে হবে। আপনি অধিবেশন শুরুর আগে রঙ নির্ধারণ করতে পারেন তবে এগুলি সমস্ত আউটপুটের জন্য কার্যকর হতে পারে, যতক্ষণ না কোনও lsবা কোনও সম্পাদক তার নিজস্ব রঙ সেট না করে।

অবশ্যই আপনি একটি প্রম্প্টের মতো দেখতে সমস্ত কিছু সনাক্ত করতে এবং এটি রঙিন করার জন্য সেশনটির জন্য কিছু মোড়ক নিয়ে আসতে পারেন তবে এটি সহজেই মিথ্যা ধনাত্মক দিকে নিয়ে যায় (একটি লাইনের সাথে প্রতিটি লাইনে রঙ $)? এবং কেবল একটি ড্রপের তুলনায় ভয়ঙ্কর জটিল হয়ে উঠবে আপনার .profileবা একক লাইন.bashrc প্রতিটি মেশিনে ।

বেশ কয়েকটি মেশিনের সাথে, এটি সমস্ত ক্ষেত্রে কনফিগারেশন পরিবর্তনগুলিকে সিঙ্ক্রোনাইজ করার সমাধানগুলি অনুসন্ধান করা কোনও ক্ষেত্রেই কার্যকর হতে পারে। এটি এর জন্য তৈরি কোনও সরঞ্জাম, বা কেবল একটি স্ক্রিপ্ট হোক বা সেগুলির উপর একটি (সেট) কনফিগারেশন ফাইল (গুলি) অনুলিপি করতে কেবল একটি লুপ চালাও।


2
এই শেষ অনুচ্ছেদ মূল। যদি ওপি "বিপুল সংখ্যক সার্ভার" পরিচালনা করে থাকে তবে অবাক করা বিষয় যে প্রত্যেকে প্রথমে পৃথকভাবে কনফিগার করতে হবে।
মনিকার সাথে লাইটনেস রেস

5

আমি এসএসপাস সহ একটি মোড়ক স্ক্রিপ্ট ব্যবহার করছি যা প্রথমে একটি অস্থায়ী প্রোফাইল আপলোড করবে এবং তারপরে এই প্রোফাইলটি ব্যবহার করে (এবং টেম্প ফাইলটি মুছবে) s

লিপির দুটি প্রধান বিষয় হ'ল:
scp ~/.bash_remote "${USER}"@"${IP}":/tmp/.bash_tmp 1>/dev/null
ssh -t "${USER}"@"${IP}" "bash --rcfile /tmp/.bash_tmp; rm /tmp/.bash_tmp"

এটি ব্যবহার করে আপনি সহজেই দূরবর্তী সেশনের রঙ নির্ধারণ করতে পারেন।

আমি জানি এটি সরাসরি আপনার প্রশ্নের উত্তর দেয় না, তবে এটি সমাধান করার জন্য এটি ব্যবহার করা যেতে পারে।


3
sshpass -pযদি সম্ভব হয় তবে ব্যবহার করবেন না ! চলমান প্রোগ্রামগুলিতে কমান্ড লাইন আর্গুমেন্টগুলি সাধারণত সমস্ত ব্যবহারকারীর কাছে দৃশ্যমান থাকে psএবং তাই পাসওয়ার্ডও হবে। আপনার মেশিনে অন্য কোনও ব্যবহারকারীর অ্যাকাউন্ট না থাকলেও আপনি এটিকে ঘটনাক্রমে স্ক্রিনে মুদ্রণ করতে পারেন। sshpassএনভায়রনমেন্ট ভেরিয়েবল থেকে পাসওয়ার্ড পড়তে পারে যা ব্যবহার করা খুব কঠিন নয়। এছাড়াও, আপনি যদি কোনও ফাইলটিতে লগইন শংসাপত্রগুলি সংরক্ষণ করতে চলেছেন তবে এসএসএস কীগুলি বিবেচনা করুন।
ilkkachu

আপনি ঠিক বলেছেন এবং আমি এর ব্যবহার প্রচারের চেষ্টা করিনি। আমি আমার স্ক্রিপ্ট থেকে একটি উদাহরণ হিসাবে কেবল আটকেছিলাম যা কেবলমাত্র উন্নয়নের উদ্দেশ্যে ব্যবহৃত হয় এবং কোনও সুরক্ষা ঝুঁকি সরবরাহ করে না। এসএসএইচপিএএস ভেরিয়েবলটি যেখানে প্রযোজনা সিস্টেমে ssh কী ব্যবহার করা হয় সেখানে ফাঁকা রেখে দেওয়া হবে। আমি আপডেট করব।
মিকেল কেজির

1

আপনার আগ্রহী হতে পারে context-color, যা আমি সেই সঠিক উদ্দেশ্যে একত্রিত করেছি: https://github.com/ramnes/context-color

এটি একটি সাধারণ স্ক্রিপ্ট যা কার্যকর করা হলে কমান্ড আউটপুট এর হ্যাশের উপর ভিত্তি করে একটি রঙ আউটপুট করে। এটি আপনার কোথাও ইনস্টল হওয়ার সাথে $PATHআপনি নিজের কিছুতে এটি করতে পারেন .bashrc:

export PS1="$(context-color -p)$PS1\[\e[0m\]"

( --prompt/-pএমন স্যুইচটি কোথায় যাতে প্রম্প্টের জন্য রঙ এড়ানো যায়, এবং\[\e[0m\] রঙ পুনরায় সেট করতে পালানোর ক্রম)

ডিফল্টরূপে, হ্যাশ উত্পন্ন করতে ব্যবহৃত কমান্ডটি whoami; hostname। আপনি যদি কেবল হোস্টনাম অনুসারে রঙ পরিবর্তন করতে চান তবে আপনি $CONTEXTপরিবর্তনশীল পরিবেশ ( export CONTEXT="hostname") পরিবর্তন করতে পারেন বা কেবল --context/-cবিকল্প ( context-color -c "hostname") ব্যবহার করতে পারেন ।

একটি উদাহরণ জন্য নিচে দেখুন:

ডেমো

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