হোস্টনামের ভিত্তিতে আপনি কীভাবে জিএনইউ স্ক্রিনের স্থিতি রেখা পরিবর্তন করতে পারেন?


31

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

.স্ক্রিনআরসি-তে শর্তযুক্ত বিবৃতি দেওয়ার কোনও উপায় আছে কি? ম্যান পৃষ্ঠার একটি দ্রুত গ্রেপ স্পষ্ট কিছু প্রকাশ করে না বলে মনে হচ্ছে।

সম্পাদনা করুন:

পরিষ্কার করার জন্য, আমার ইতিমধ্যে একটি কাস্টম হার্ড স্ট্যাটাস লাইন রয়েছে; আমি যে স্ক্রিনটি চালু আছে তার হোস্টনামের ভিত্তিতে প্রদর্শিত রঙিন / ক্ষেত্রগুলির কিছু পরিবর্তন করতে চাই। আমার পিএস 1 এর জন্য আমার এরই মধ্যে ইতিমধ্যে কিছু রয়েছে তবে আমি এই হোস্টগুলি থেকে রাউটার / সুইচগুলিতে ঝাঁপিয়ে পড়ার পরিবর্তে পর্দার স্থিতি লাইনে এটি করব, যা আমাকে কোনও প্রম্পট কালোরাইজেশন করতে দেয় না। এইভাবে, আমি উত্পাদনের জন্য একটি উইন্ডো রাখতে পারি এবং একটির বিকাশের জন্য পর্দার স্থিতি রেখার রঙটি আমাকে জানায় যে আমি কোন এক নজরে আছি।


যে মেশিনটির হোস্টনেম চলছে সেই স্ক্রিনটি চলছে? বা সেই বিশেষ পর্দার হোস্টের নামটি 'উইন্ডো' ব্যবহার করছে?
কাইল ব্র্যান্ড্ট

@ কাইল: মেশিনটির হোস্টনাম যা স্ক্রিনটি চলছে। আরও বিস্তারিত জানার জন্য আপডেট হওয়া প্রশ্নটি দেখুন।
মুরালি সুরিয়ার

উত্তর:


13

আমি এটি করার দুটি উপায় দেখতে পাচ্ছি, প্রথমটি হল হোস্ট দ্বারা একটি স্ক্রিনসিআরসি ফাইল তৈরি করা।
ভালো লেগেছে .screenrc_serverA, .screenrc_serverB...
আপনার শেল প্রারম্ভে লিপিতে SCREENRC ভালো কিছু সেট .screenrc_`hostname`
অবশ্যই আপনি পর্দায় উৎস কমান্ড ব্যবহার করতে পারেন ভালো কিছু অন্তর্ভুক্ত করা .screenrc_defaultপ্রতিটি কাস্টম .screenrc_ মধ্যে, যাতে তারা শুধুমাত্র একটি ক্যাপশন / hardstatus লাইন এবং ধারণ করে ... ফাইল পুরো কনফিগারেশন প্রতিটি সময়।

দ্বিতীয় উপায়টি হ'ল কমান্ডগুলি কার্যকর করা screen -X hardstatus lastline ...( যেমন পরীক্ষার মাধ্যমে যদি কমান্ডটি বিভিন্ন মান সহ ... হোস্টনামের উপর নির্ভর করে) আপনার শেল স্টার্টআপ স্ক্রিপ্টে ব্যবহার করা হয়। আপনি যখন সার্ভারে লগইন করবেন, তখন স্ক্রিন-এক্স কিছুই করবে না কারণ স্ক্রিনটি এখনও চালু হবে না, তবে আপনি যখনই স্ক্রিনে একটি নতুন উইন্ডো খুলবেন তখন হার্ডস্ট্যাটাস আপডেট হবে।

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


আপনি যখন ".screenrc_hostname" পড়ুন ".স্ক্রিনসিআর_ hostname" পড়বেন । আমি পোস্টে include অন্তর্ভুক্ত করতে সমস্যা পেয়েছি
ব্যাসার্ধ

ভাল লাগল - SCREENRC এনভায়রনমেন্ট ভেরিয়েবলটি প্রথমে সার্চ করার বিষয়ে ম্যান পেজে অংশটি মিস করেছি।
মুরালি সুরিয়ার

@ ফ্রেডিয়াস আমি এই পরামর্শটি ব্যবহার করে ব্যাকটিক্স যুক্ত করতে সক্ষম হয়েছিলাম
ব্রুনো ব্রোনোস্কি

16

@ ফ্রেডিয়াস এসসিআরইএনআরসি জিনিসটির সাথে স্পট-অন রয়েছে, তবে এটি খুব সম্পূর্ণ উত্তর ছিল না, তাই আমি আরও বিস্তারিত বলব ...

~ / .Bashrc

# Strip down a FQDN
hostname="$(hostname | sed 's/\..*//')"
# Use the case pattern for server groups
case "$hostname" in
    mario|luigi|toad|peach|koopa*|bowser) export SCREENRC=~/.screenrc_prod;;
    dev*|vm*)  export SCREENRC=~/.screenrc_dev;;
esac
# Use condensed bash "new test*" notation to override for specific servers
# e.g. ~/.screenrc_bowser would get used instead of ~/.screenrc_prod
[[ -f "~/.screenrc_$hostname" ]] && export SCREENRC="~/.screenrc_$hostname"

* সর্বদা নতুন পরীক্ষা ব্যবহার করুন !

পালানোর চরিত্রগুলি সম্পর্কে একটি শব্দ

স্ক্রিপ্টগুলিতে রঙগুলি অন্তর্ভুক্ত করার সঠিক উপায়টি হ'ল অক্ষরের সাথে পাল্টে না, টিপুট দিয়ে। আপনার পালানোর অক্ষরগুলি আপনার টার্মিনালের সাথে নির্দিষ্ট। Tput কমান্ড টার্মিনাল সচেতন। যখন আমার স্ক্রিপ্টগুলিতে অভিনবতা দরকার তখন আমি এটি লিখেছিলাম:

~ / বিন / COLORS.sh

GT_RESET=$(   tput sgr0)  # Reset all attributes
GT_BRIGHT=$(  tput bold)  # Set “bright” attribute
GT_DIM=$(     tput dim)   # Set “dim” attribute (normal/non-bright)
GT_ULINE=$(   tput smul)  # Set “underscore” (underlined text) attribute
GT_BLINK=$(   tput blink) # Set “blink” attribute
GT_INVERSE=$( tput rev)   # Set “inverse” attribute
GT_HIDDEN=$(  tput invis) # Set “hidden” attribute

FG_BLACK=$(   tput setaf 0) #foreground to color #0 - black
FG_RED=$(     tput setaf 1) #foreground to color #1 - red
FG_GREEN=$(   tput setaf 2) #foreground to color #2 - green
FG_YELLOW=$(  tput setaf 3) #foreground to color #3 - yellow
FG_BLUE=$(    tput setaf 4) #foreground to color #4 - blue
FG_MAGENTA=$( tput setaf 5) #foreground to color #5 - magenta
FG_CYAN=$(    tput setaf 6) #foreground to color #6 - cyan
FG_WHITE=$(   tput setaf 7) #foreground to color #7 - white

BG_BLACK=$(   tput setab 0) #background to color #0 - black
BG_RED=$(     tput setab 1) #background to color #1 - red
BG_GREEN=$(   tput setab 2) #background to color #2 - green
BG_YELLOW=$(  tput setab 3) #background to color #3 - yellow
BG_BLUE=$(    tput setab 4) #background to color #4 - blue
BG_MAGENTA=$( tput setab 5) #background to color #5 - magenta
BG_CYAN=$(    tput setab 6) #background to color #6 - cyan
BG_WHITE=$(   tput setab 7) #background to color #7 - white

টিপুট এর ব্যবহার প্রদর্শনের জন্য আমি একটি স্ক্রিপ্টও তৈরি করেছিলাম। আপনি এই सारটি থেকে এটি পেতে পারেন।

দেখুন:
http://www.ibm.com/developerworks/aix/library/au-learningtput/?S_TACT=105AGY06
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html


1
আমি দুটি "অসঙ্গতি" পেয়েছি। প্রথমটি হ'ল ব্যাকগ্রাউন্ডের জন্যও setafএটি ব্যবহৃত হয়, যদিও এটি হওয়া উচিত setab( চ এর পরিবর্তে ) এবং দ্বিতীয়টি এটি যে ডিফল্ট হিসাবে ব্যবহার করা আমার পক্ষে কাজ করে না, সম্ভবত কারণ টিপুট-সংস্করণ মানক নয় (উভয় ক্ষেত্রে) তার ক্ষেত্রে বা আমার ক্ষেত্রে, আমি কেবল জানি না এবং এটি আসলে খুব বেশি গুরুত্বপূর্ণ নয়)9
শ্যাডো

এটি ধরার জন্য @ ছায়া ধন্যবাদ আমি এটা সংশোধন করেছি।
ব্রুনো ব্রোনোস্কি

5

কেবল এটি আপনার .স্ক্রিনআরকে হার্ডস্ট্যাটাস ভেরিয়েবল হিসাবে সেট করুন। যতক্ষণ আপনি হোস্টনামের জন্য% H এর মতো ভেরিয়েবল ব্যবহার করছেন ততক্ষণ আপনি এতে যে কোনও হোস্ট নেম মেলে তা পরিবর্তিত হবে।

hardstatus alwayslastline "%{rk}%H %{gk}%c %{yk}%M%d %{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%?"

নীচে এমন একটি স্ট্যাটাস লাইন দিবে যা দেখতে দেখতে

পর্দার হার্ডস্ট্যাটাস উদাহরণ

হোস্টনাম কালো রঙের উপর লাল, কালো রঙে সময় সবুজ, গায়ে তারিখটি হলুদ। * দিয়ে চিহ্নিত উইন্ডোটি হ'ল বর্তমান উইন্ডো, সাদা পটভূমিতে নীল পাঠ্যে দেখানো হয়েছে। চিহ্নিত চিহ্নিত উইন্ডোটি - পূর্বের সক্রিয় উইন্ডো, কালোতে সাদা পাঠ্য দেখানো হয়েছে। উইন্ডো 1, উপরে, বর্তমান বা পূর্ববর্তী নয় এবং এটি কালো রঙের সাদা রঙে প্রদর্শিত হবে। অন্যান্য সম্ভাবনাগুলি আপনাকে অন্য ব্যবহারকারীদের উইন্ডোতে সংযুক্ত, কালোতে সাদা, এবং + দ্বারা চিহ্নিত হিসাবে দেখায়।

সময় প্রদর্শনের ফলে আপনি স্ক্রিনটি চালানোর জন্য রিমোট সার্ভারগুলিতে ছুটে গেলেও লাইভ রাখতে সহায়তা করে, প্রতি মিনিটে সময় পরিবর্তনের ফলে আপনার সেশনটি বাঁচিয়ে রাখবে, এমনকি শেলটি দূরবর্তী দিক থেকে নিষ্ক্রিয় থাকলেও।


এটি আমাকে শর্তসাপেক্ষে তার কাঠামোর উপর ভিত্তি করে হোস্টনামটি ফর্ম্যাট করতে দেয় না (যেমন কোনও হোস্টনাম নীল বর্ণে '-দেব' এ শেষ হয়, কোনও হোস্ট-নেম '-প্রড'-এ শেষ হয় লাল)
মুরালি সুরিয়ার

অই। যদি কেবল স্ক্রিনসিআর যদি স্টেটমেন্টগুলি রিজেক্সকে সমর্থন করে।
টিম কেনেডি

4

আপনি ব্যাকটিক স্ক্রিপ্টের মধ্যে থেকে মুদ্রণ \005{..r}বা অনুরূপ দ্বারা ( rযেমন রেড ইত্যাদির জন্য ঠিক .screenrcনিজের মধ্যেই) স্ট্যাটাস লাইনটি রঙ করতে পারেন , তাই আপনি হয়ম্বরের কাছে একটি নম্বর পৌঁছানোর জন্য হোস্টনামটি হ্যাশ করতে পারেন, বা সেট করতে শর্তাধীন বিবৃতিগুলির একটি গুচ্ছ রাখতে পারেন রঙ। উদাহরণস্বরূপ, রঙ পরিবর্তন করতে এবং স্ক্রিনের মধ্যে ব্যবহারের জন্য হোস্টনামটি মুদ্রণের জন্য এখানে একটি স্ক্রিপ্ট রয়েছে:

#!/bin/bash
Red="\005{..r}"
Yellow="\005{..y}"
Green="\005{..g}"
Blue="\005{..b}"
Magenta="\005{..m}"
Cyan="\005{..c}"
White="\005{..w}"

case "$HOSTNAME" in
   lubuntu-eee)
      echo -e "$Magenta$HOSTNAME"
      ;;
   ubuntu-pc)
      echo -e "$Magenta$HOSTNAME"
      ;;
   *)
      echo -e "$Green$HOSTNAME"
esac

তারপরে আপনি এই স্ক্রিপ্টটির জন্য একটি এন্ট্রি যুক্ত করুন .screenrcএবং হার্ডড্যাটাসের মধ্যে এটি উল্লেখ করুন বা ক্যাপশনটিকে% 4` হিসাবে উল্লেখ করুন:

backtick 4 3600 3600 /usr/local/bin/screen_hostname
caption always "%{.kc}%D %d.%m.%Y %=%{.kg} %4` %{.kc}%0c"

এটি ধরে নিয়েছে যে হোস্টের নামটি পরিবর্তনের সম্ভাবনা নেই, সুতরাং সময়সীমা এবং মেয়াদ 1 ঘন্টা (3600 সেকেন্ড); ব্যাকটিকের কাছে কলটির চারপাশের বিটগুলি কেবল রেখার শুরুতে এবং হোস্টনামের পরে সময়টি রেখে দেয়।

এমনকি আপনি শেল স্ক্রিপ্ট থেকে প্রাসঙ্গিক মানগুলি অ্যাক্সেস করে ধরে নিয়েছেন, ব্যাটারি চার্জ স্তর, সিস্টেম লোড বা তাপমাত্রার মানের উপর নির্ভর করে কোনও স্ক্রিপ্টের আউটপুট রঙ করার জন্য আপনি এই প্রক্রিয়াটি ব্যবহার করতে পারেন।


screenপালানোর কথা উল্লেখ করার জন্য +1 \005- ইতিমধ্যে শক্ত শর্তের পরিবর্তে পুরো শর্তযুক্ত ফর্ম্যাটটিকে অনেক বেশি পঠনযোগ্য শেল স্ক্রিপ্টে রাখা যেতে পারে captionhardstatusপর্দার দিকনির্দেশনা।
সিকুজাউ

1

আপনি যদি প্রচুর স্ক্রিপ্টিং এড়াতে চান তবে আপনি এটি চেষ্টা করতে পারেন:

backtick 5 99999 99999 grep prod /etc/hostname
caption always "%?%{.R.}%5`%:%H%?"

গ্রেপ কেবল হোস্ট-নেম প্রিন্ট করবে যদি এটি "প্রোড" এর সাথে মেলে, তাই আপনি এটি একটি ব্যাকটিক এবং %?নির্মাণে প্লাগ করতে পারেন । ভিওলা!

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