जब मैं एक सर्वर ssh करता हूं तो मैं स्वचालित रूप से टर्मिनल रंग कैसे बदल सकता हूं?


14

मैं अक्सर अपने ओएस एक्स टर्मिनल विंडो से विभिन्न सर्वरों में प्रवेश कर रहा हूं।

मैं अलग-अलग मेजबानों के लिए एक रंग योजना असाइन करना चाहता हूं ताकि मेरी टर्मिनल विंडो अलग से बता सकें। क्या यह अपने आप हो सकता है?

जवाबों:


11

यहाँ एक पूर्ण समाधान है। अपने सर्वर के आईपी पते और / या डोमेन और उन रंगों की सूची रखें जिन्हें आप उनके लिए चाहते हैं ~ / .server_colors में।

192.168.122.102, रेड सैंड्स
192.168.122.103, महासागर
www.foo.com, घास
foo.com, घास

फिर ssh कमांड को हाईजैक करने के लिए इस लाइन को ~ / .profile में जोड़ें:

अन्य उपनाम = "~ / बिन / safe_ssh $ 1"

फिर आपके ssh लक्ष्य में @ की सूची के बाद जो कुछ भी है, उसकी तुलना करें। यदि कोई मेल है, तो स्क्रीन को संबंधित रंग में बदलने के लिए AppleScript चलाएं। यहाँ ~ / bin / safe_ssh:

#! / Bin / bash
आईपी ​​= `प्रतिध्वनि $ 1 | cut -d "@" -f2`
मैच = `बिल्ली ~ / .server_colors | grep $ ip | wc -l`
अगर [$ मैच -२ ०]
फिर
    रंग = `बिल्ली ~ / .server_colors | grep $ ip | cut -f2 -d "," `
    ऑसकस्क्रिप्ट ~ / बिन / बदलाव_टरिनल_कोलर। गुप्त "$ रंग" 2> / देव / अशक्त
फाई
/ usr / bin / ssh $ 1

और अंतिम, यहाँ ~ / bin / change_terminal_color.scpt है

रन arvv पर
    एप्लिकेशन को "टर्मिनल" को विंडो 1 के चयनित टैब की वर्तमान सेटिंग्स सेट करने के लिए बताएं (पहली सेटिंग जिसका नाम है (argv का आइटम 1))
अंत चला

मैंने इस ब्लॉग पोस्ट से अधिकांश कोड ले लिए ।


1
बहुत अच्छा। Safe_ssh स्क्रिप्ट में, SSH को अतिरिक्त पैरामीटर की अनुमति देने के लिए $ 1 $ @ होना चाहिए। शायद डिफॉल्ट रूप से टर्मिनल को वापस लौटने के लिए ssh के बाद कॉल भी। एक अंतिम संपादन यह बहुत सही बना देगा: SSH कमांड के लिए समर्थन जिसमें '@' नहीं है।
nOw2

2

हाँ।

या तो आप "स्क्रीन" का उपयोग करते हैं और इसे अनुकूलित करते हैं: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html

या यदि संभव हो तो आप इसे अपने SSH क्लाइंट पर करने का प्रबंधन करते हैं।

आप यह भी कोशिश कर सकते हैं: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/


2

@ मुरीबोट का समाधान मेरे लिए वास्तव में अच्छा काम करता है। मैंने उस पर कुछ कम सुधार किए। पर्याप्त प्रतिष्ठा होने पर मैं उसे अपने पद से नीचे जोड़ दूंगा।

लाइन बदलें

आईपी ​​=echo $1 | cut -d"@" -f2
साथ में
आईपी ​​=echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

यह परिवर्तन आपके ssh कमांड के लिए अतिरिक्त तर्क देने की अनुमति देता है जैसे "ssh -p 1111 userName @ host"

नियमित अभिव्यक्ति सरल ipv4 पतों और डोमेन नामों के लिए अनुमति देता है।

कई तर्कों का समर्थन करने के लिए अंतिम पंक्ति को बदल दें

/ usr / बिन / ssh $ @


0

मैं बस एक ही चीज़ की तलाश में था और इस लेख को पाया:

http://akrabat.com/php/osx-terminal-colours/

यह ऐप्पलस्क्रिप्ट द्वारा टर्मिनल रंगों को बदलने के लिए एक php स्क्रिप्ट का उपयोग करता है। आप प्रत्येक सर्वर के लिए अलग-अलग रंगों के मैपिंग सेट कर सकते हैं। मेरे लिए बहुत अच्छा काम करता है, हालाँकि मुझे लगता है कि रूबी में php सामान को फिर से लिखने का आग्रह है :)

FK


0

मैं एक स्क्रिप्ट का उपयोग करता हूं जो विभिन्न bg / fg रंगों के साथ xterm विंडो में SSH लॉन्च करता है। यह होस्टनाम के हैश के आधार पर रंगों का चयन एक रंग अवधि से करता है ताकि किसी कॉन्फ़िगरेशन की आवश्यकता न हो।

स्क्रिप्ट रूबी में लिखी गई है: https://github.com/mickeyil/ssx


0

यदि आप iTerm2 का उपयोग कर रहे ~/bin/ssh-host-color.shहैं, तो https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57 से सामग्री के साथ नाम वाली फ़ाइल बनाएँ :

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

और अपनी ~/.aliases.shफ़ाइल में निम्न पंक्ति जोड़ें :

alias ssh="~/bin/ssh-host-color.sh $@"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.