Wie stellen Sie klar, dass Sie sich in einem Produktionssystem befinden?


135

Einige von uns in meinem Unternehmen haben Root-Zugriff auf Produktionsservern. Wir suchen nach einem guten Weg , es zu machen überaus deutlich , wenn wir in ssh'd haben.

Einige Ideen, die wir hatten, sind:

  • Leuchtend rote Eingabeaufforderung
  • Löse ein Rätsel, bevor du eine Muschel bekommst
  • Geben Sie ein zufälliges Wort ein, bevor Sie eine Shell erhalten

Welche Techniken wenden Sie an, um Produktionssysteme zu unterscheiden?


11
Gibt es eine Möglichkeit, Menschen beizubringen, dass sie sich nicht mit Produktionssystemen auseinandersetzen müssen? Wenn Sie beispielsweise alles in Puppet eingecheckt haben, müssen Sie sich nur zur Fehlerbehebung bei Produktionssystemen anmelden.
Alex Holst

37
Sie erlauben Root-SSH-Zugriff auf Ihre Produktionssysteme ???? !!!!!
Symcbean

7
@symcbean: das hat Sionide nicht gesagt. Er hätte nach Ihnen SSH in Ihr Benutzerkonto bedeuten können.
Zan Lynx

3
Wird diese Frage ein Kandidat für das Community-Wiki?
MadHatter

15
Durch Deaktivieren von SSH können Sie deutlich machen, dass es sich um ein Produktionssystem handelt. Klarer kann es nicht sein.
Franci Penov

Antworten:


137

Die rote Eingabeaufforderung ist eine gute Idee, die ich auch benutze.

Ein weiterer Trick besteht darin, eine große ASCII-Warnung in die /etc/motdDatei einzufügen.
Wenn Sie so etwas bei der Anmeldung begrüßen, sollten Sie Ihre Aufmerksamkeit auf sich ziehen:

 _______ _ _ _____ _____ _____ _____            
| __ __ | | | | _ _ | / ____ | | _ _ | / ____ | / \    
   | | | | __ | | | | | (___ | | | (___ / \   
   | | | __ | | | \ ___ \ | | \ ___ \ / / \ \  
   | | | | | | _ | | _ ____) | _ | | _ ____) | / ____ \
   | _ | | _ | | _ | _____ | _____ / | _____ | _____ / / _ / \ _ \


 _____ _____ _____ _ _ _____ _______ _____ ____ _ _ 
| __ \ | __ \ / __ \ | __ \ | | | | / ____ | __ __ | _ _ / __ \ | \ | |
| | __) | | __) | | | | | | | | | | | | | | || | | | \ | |
| ___ / | _ / | | | | | | | | | | | | | | || | | | . `|
| | | | \ \ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | | \ |
| _ | | _ | \ _ \\ ____ / | _____ / \ ____ / \ _____ | | _ | | _____ \ ____ / | _ | \ _ |


 __ __ _____ _ _ _____ _ _ ______ 
| \ / | / \ / ____ | | | | _ _ | \ | | ____ |
| \ / | / \ | | | | __ | | | | | \ | | | __   
| | \ / | | / / \ \ | | | __ | | | | . `| __ |  
| | | | / ____ \ | ____ | | | | _ | | _ | | \ | | ____
| _ | | _ / _ / \ _ \ _____ | _ | | _ | _____ | _ | \ _ | ______ |

Sie können eine solche Warnung auf dieser Website erstellen oder den figlet Befehl verwenden.

Feige

Wie Nicholas Smith in den Kommentaren vorgeschlagen hat, können Sie mit dem cowsayBefehl einige Drachen oder andere Tiere aufpeppen .

Drache cowsay

Anstatt die Datei / etc / motd zu verwenden, können Sie auch cowsayoder figletin der .profileDatei aufrufen .


3
Oh, das gefällt mir!
Sionide21

13
Wenn Sie einen Befehl eingegeben haben, sehen Sie das nicht mehr.
Nils

3
Allerdings ist hier die rote Eingabeaufforderung hilfreich.
Kenny Rasschaert

41
Auf Windows-Servern verwende ich eine leuchtend rosa Desktop-Farbe und ein leuchtend gelbes Titelleisten- / Farbschema, damit es wirklich, wirklich offensichtlich ist. Dies ist unsere Version einer farbigen Eingabeaufforderung
Mark Henderson

8
Ich möchte dem Mix ASCII-Drachen hinzufügen .
Nicholas Smith

80

Nicht ganz das Gleiche, aber auf dieser Website wird empfohlen, dass Ihre Entwickler einen rosa Sombrero tragen, wenn Sie Änderungen an Produktionssystemen vornehmen. Sie könnten wahrscheinlich eine ähnliche Regel haben, um in sie hineinzugehen.

Entwickler trägt einen rosa Sombrero


1
Haha! +1, weil ich LOL würde. Aber im Ernst, Menschen können ihre fehlende Brille suchen, während sie sie tragen. Ich bezweifle, dass ein Hut als "ständige Erinnerung" dienen wird. Außerdem hilft es Ihnen nicht, sich daran zu erinnern, welches Fenster welches ist.
Felix Dombek

7
Ja, Sie müssten Ihren Prozess folgendermaßen ändern: 1) Erklären Sie den Wunsch, die Produktion zu bearbeiten. 2) Hol den Sombrero raus und schalte alle anderen Fenster aus. 3) Produziere, während alle zuschauen. 4) Melden Sie sich von der Sitzung ab und entfernen Sie den Sombrero.
Aric TenEyck

1
"2) Hol den Sombrero raus und schalte alle anderen Fenster aus" Das funktioniert in meiner Firma nicht wirklich, da dies Schritt 2 aller unserer SOPs ist. Schritt 1 ist natürlich "Licht einschalten", denn bei geschlossenen Fenstern kann es in diesem Büro ziemlich dunkel werden.
Parthian Shot

50

Das größte, das ich verwendet habe, ist ein diskretes Benennungsschema, bei dem Produktsysteme offensichtlich anders benannt sind als Test- / Entwicklungsinstanzen. Dies macht die Eingabeaufforderung "Benutzername @ Hostname:" sichtbar anders. Und mit offensichtlich meine ich mehr als nur verschiedene Wörter, auch verschiedene Formate:

Beispiel: PRD-WEB001 vs DEVEL-BOB-WEB001

Das hat mehrere Gründe:

  • Der zusätzliche hypenierte Block macht es zu einem Dreier-Satz anstelle eines Zweier-Satzes.
  • Der erste Satz hat eine andere Länge.
  • Die Gesamtlänge der Namen ist deutlich unterschiedlich, wodurch sich der Befehlszeilenabstand und der Text im Fenster voneinander unterscheiden.

Und das Beste ist, dass für die Produktion keine speziellen Terminal-Konfigurationen erforderlich sind, um Hoppla-Fehler zu vermeiden.

Nach meiner Erfahrung möchten Sie etwas, das Sie ständig daran erinnert, wo Sie sich befinden. Login-Methoden wie Rätsel sind für ca. 10 Sekunden gültig, bis Sie vergessen, welches Fenster welches ist. Alles, was Sie tun müssen, ist, lsim falschen Verzeichnis das ominöse Login-Banner aus dem Blickfeld zu rollen, das Terminal-Fenster unter einem Browser-Fenster zu vergraben, während Sie etwas googeln, die Alt-Tab-Taste zum falschen Fenster zurückzukehren und Chaos zu verursachen. Am besten haben Sie einen konstanten visuellen Hinweis wie eine deutlich andere Eingabeaufforderung.


Das funktioniert sehr gut für Basissysteme, aber sobald Sie einen Entwickler in einen Entwickler umwandeln, stöhnen und ächzen die Entwickler, da die Hälfte ihrer Verknüpfungen nicht mehr funktioniert (egal, wie oft Sie dies zuvor getan haben), und manchmal auch die Das System selbst arbeitet nur halbwegs, bis Sie alle zahlreichen Verweise auf den alten Namen in den Konfigurationsdateien korrigiert haben. Vor allem mit proprietärer Software und DNS-Aliasen hilft nur so viel. Schlimmer noch, es ist leicht, die Eingabeaufforderung beim Wechseln der Fenster vollständig zu vergessen.
SilverbackNet

Entwickler müssen Einstellungen erstellen, die für Entwickler / Test / Staging / Produktion gelten (das mache ich, aber es ist eine andere Geschichte). Eine funktionierende "rote Eingabeaufforderung" für Bash (schwieriger als es scheint) finden Sie in meiner Antwort unter serverfault.com/a/479718/79266
RichVel,

39

Eine Sache, die Sie beachten müssen, ist, dass dies eine dauerhafte Erinnerung sein muss, nicht nur ein Indikator bei der Anmeldung. Sehr oft werden mehrere Muscheln gleichzeitig in verschiedenen Registerkarten ausgeführt und zwischen ihnen gewechselt. Einige werden Entwickler sein, andere produzieren. Wenn Sie also einen Befehl ausführen, müssen Sie an diesem Punkt einen Indikator haben. Eine spezielle Eingabeaufforderung ist meiner Erfahrung nach die beste Methode. Eine geänderte Titel- / Tab-Leiste ist eine gute Ergänzung, um das richtige Fenster / den richtigen Tab einfach zu finden.

Daher würde ich empfehlen, eine farbige Eingabeaufforderung (Rot ist die offensichtliche Wahl) und alle Großbuchstaben für den Hostnamen zu verwenden, mit ähnlichem Verhalten für den Benutzer (privilegiert oder nicht privilegiert) als Eingabeaufforderung. Einige Beispiele:

Beispiel für farbige Eingabeaufforderungen

Normalerweise so etwas wie

set prompt =  "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "` 

in Ihrer Shell-Startdatei. Dieser ist für das Blau. Ersetzen Sie das 44durch 41Tannenrot und 42durch Grün. Andere Farben und wilde Muster auch verfügbar .


Eine funktionierende "rote Eingabeaufforderung" für Bash (schwieriger als es scheint) finden Sie in meiner Antwort unter serverfault.com/a/479718/79266 - zeigt auch Git-Zweig, abgeschnittenes aktuelles Verzeichnis usw.
RichVel

14

Das sind meine Vorschläge:

1) Stellen Sie sicher, dass die meisten Befehle (rm, chown, chmod, /etc/init.d/*) in der Produktionsumgebung sudo-Zugriff erfordern

2) Verwenden Sie PS1 / PS2, um anzuzeigen, dass sich der Benutzer in einem Prod-Server befindet

bash-3.2$  export PS1="[\u@\h \W]\$ "

Dies zeigt die Eingabeaufforderung als

[sridhar@prodappserver901 conf]$

3) Wenn Sie Putty / SSH-Clients verwenden, können Sie immer eine eindeutige Hintergrundfarbe / ein eindeutiges Hintergrundprofil festlegen, um die Produktionsserver hervorzuheben.


# 1 ist eine interessante Idee, aber unpraktisch, da Skripte, die als Daemon-Benutzer ausgeführt werden, möglicherweise rm, chmod usw. verwenden müssen.
Zan Lynx,

13

Denken Sie nur daran, dass Ihre zweite und dritte Idee bei der erstmaligen Verbindung hilfreich sind, aber keinen Wert haben, wenn Sie mehrere Terminals geöffnet haben und von einem zum anderen wechseln. Die Idee von sysadmin1138, Namen zu verwenden, ist gut, wenn sie angewendet werden können, aber es gibt viele Fälle, in denen dies nicht möglich ist.

Das einzige, was ich als wirklich lohnenswert empfunden habe, ist eine farbige Eingabeaufforderung. Ich mag grün für Entwickler / Test, rot für Produktionszwecke und blau für Maschinen in der DMZ. Selbst wenn ich zwei Maschinen mit demselben Namen (in verschiedenen Netzwerken) habe, z. B. beim Vorbereiten einer Ersatzmaschine, kann ich auf diese Weise leicht feststellen, auf welcher ich mich befinde.


11

Die rote / spezielle Eingabeaufforderung ist gut. Eine andere Möglichkeit ist ein schnelleres automatisches Abmelden bei Computern, die die Variable TMOUT verwenden. Wenn Sie viele Fenster geöffnet haben, verschwinden die produktiven schneller.

Dies sollte zu einem anderen Verhalten führen:

  1. Entwickeln
  2. Prüfung
  3. Nehmen Sie Ihre Änderungen an einem Staging-Server vor
  4. Nur dann können Sie schnell zur Produktion übergehen und diese dort bereitstellen (genau so, wie Sie es auf dem Staging-Server getan haben).

9

Die Arbeit an einer Produktionsmaschine mit einem normalen Root-Account ist niemals eine gute Idee.

Besitzen Sie ein Konto mit vollständigen Sudo-Berechtigungen. Ermöglicht nicht das Speichern einer Sudo-Sitzung. Verbieten Sie sudo su. Verwenden Sie ein separates Passwort dafür (nicht eines, das Sie für Ihren Entwicklungscomputer haben). Möglicherweise müssen Sie sudo optimieren, um die Produktionsidentität der Shell zu ermitteln, bevor Sie den Befehl ausführen (über Alias).

Es wird versehentliche Fehler ziemlich schwer machen. Und rote Eingabeaufforderung tut nie weh.


und mit "sudo su" meinst du "sudo -i" oder zumindest "sudo su -", oder?
Sparr

Whoa! Es ist Sparr! Kleine Welt :)
Sionide21

1
Es ist unmöglich, Menschen davon abzuhalten, eine Wurzelschale zu haben. ( sudo bash). Sie können eine Root-Shell von jedem 'Blacklist'-Setup erhalten. (Wenn Sie vorsichtig sind, können Sie es mit einem Whitelist-Setup stoppen, aber es ist in der Regel nicht garantiert.)
user606723 20.10.11

1
Es soll nicht den beabsichtigten Zugriff auf die Root-Shell verhindern - nur einige gebräuchliche Methoden, an die Menschen so gewöhnt sind, dass sie es unbewusst tun können, ohne darauf zu achten.
Mihails Strasuns

8

Ich habe mich für die Idee der roten Eingabeaufforderung entschieden und fand es ziemlich mühsam, Arbeitscode für zu finden .bashrc.

Hier ist also meine Version, die zum Einfügen bereit ist .bashrc- https://github.com/RichVel/nicer-bash-prompt . Es ist völlig von den Hostnamen angetrieben, so lange , wie Sie ein geeignetes Muster zur Produktion Host - Namen haben (sagen wir xyprod01, xyprod02etc) , es wird gut funktionieren, und Sie können das gleiche verwenden .bashrcin allen Umgebungen.

Es sieht aus wie das:

Screenshot der roten Eingabeaufforderung

Dadurch wird eine schönere Bash-Eingabeaufforderung erstellt, einschließlich einer roten Eingabeaufforderung auf Produktionshosts. Außerdem werden der aktuelle Git-Zweig und die letzten beiden Verzeichnisse in $ PWD angezeigt. Es wird darauf geachtet, dass die Anzeige der Eingabeaufforderung nicht durcheinander gebracht wird, wenn Strg / R (Rückwärtssuche) in der Bash ausgeführt wird.

Enthält außerdem eine optionale Funktion zum Synchronisieren des Bash-Verlaufs in allen Terminalfenstern gemäß dieser Antwort . Das ist nett, aber nicht jeder will es, also ist es standardmäßig deaktiviert.


5

Ich weiß zwar nicht, wie Ihre IT-Einrichtung aussieht, aber eine möglicherweise wirksame Lösung wäre, über einen speziellen Raum zu verfügen, in dem Sie als Root zu SSH auf Produktionsservern wechseln müssen. Wenn Sie über ein Rechenzentrum verfügen, kann dies der Serverraum selbst sein. Wenn Sie jedoch einen separaten physischen Standort haben, von dem aus „normale“ Arbeiten nicht ausgeführt werden, wird dies effektiv daran erinnert, dass Sie auf Produktionsmaschinen zugreifen.


2
Das wäre sicherlich effektiv, aber für die meisten Situationen wäre es auch äußerst kontraproduktiv.
John Gardeniers

Ich stimme John zu, aber das ist sicherlich etwas, worüber man nachdenken sollte.
user606723

@ JohnGardeniers: kontraproduktiv? Sie meinen, es würde die Produktivität beeinträchtigen?
LarsH

@LarsH: Es schadet mit Sicherheit der Produktivität, unnötig in verschiedene Räume gehen zu müssen, um verschiedene Aufgaben zu erledigen. Ihr gesamtes Netzwerk sollte von einem einzigen Standort aus verwaltet werden können.
John Gardeniers

@ JohnGardeniers: verstanden. Als Sie anfänglich "kontraproduktiv" sagten, meinten Sie, die Wirkung widerspreche dem angegebenen Zweck, nämlich der ständigen Erinnerung daran, dass Sie auf Produktionsmaschinen zugreifen.
LarsH

4

Nur eine Feinabstimmung der obigen Vorschläge. Ich verwende CDE als meinen Unix-Desktop und alle Produktionssysteme, auf die ich über ein Menü in .dt / dtwmrc zugreife. Auf allen Dev- und UAT-Systemen behalte ich mein normales Farbschema bei, aber auf Prod-Systemen habe ich das Terminal so eingestellt, dass es einen roten Hintergrund hat. Ich mag den Look nicht, aber das ist der springende Punkt.

eta - verpasste Karols Vorschlag, im Grunde dasselbe zu tun


4

Wenn ich mich bei einer Produktionsmaschine anmelde, erhalte ich einen Absatz mit der Warnung, dass es sich um eine Produktionsmaschine handelt, sowie eine kurze Liste mit Richtlinien. Es gibt eine Nummer, die ich für den UNIX-Support anrufen kann, wenn ich glaube, dass ich meine Aufgabe nicht sicher alleine erledigen kann, eine Erinnerung, dass das Sprengen einer Produktionsmaschine meinen Job kosten kann, und eine Erinnerung, dass alles, was ich tue, protokolliert ist.

Bearbeiten: Ich arbeite in der Transportbranche.


Autsch. Ich verstehe zwar, warum dies notwendig ist, bin aber froh, dass ich nicht in einer solchen Umgebung arbeite.
LarsH

1
Ich bin froh, dass ich das tue - ich arbeite im Transportwesen, und diese Systeme kosten nicht nur Geld, wenn sie ausfallen, sie kosten Leben.
Basil

Ich bin froh, dass du auch so vorsichtig bist!
LarsH

3

In PuTTY können Sie den Titel des Fensters in einen anderen als den Standardtitel für eine bestimmte gespeicherte Sitzung ändern. Dies bleibt immer im Fenster, egal was Sie im Fenster tun. Dies wird auch in der Taskleiste angezeigt.

Erweitern Sie Fenster, klicken Sie auf Verhalten. Geben Sie in den Fenstertitel Folgendes ein:

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *

3

Einfache Antwort? Ändere die Farbe deiner Shell in der Shell-Konfiguration auf Rot. Es wird absolut offensichtlich und einfach einzurichten sein. Nicht nur das, sondern im Gegensatz zu Server-Headern wird es nicht ausgeblendet, nachdem Sie einige Befehle eingegeben haben.


3

Hier ist, was ich auf meinem Mac gemacht habe. Für jeden Server füge ich einen Eintrag in meine ~ / .ssh / config-Datei ein, z

Host app13
    HostName server.example.com
    User tom
    PermitLocalCommand yes
    LocalCommand osascript %d/bin/change_terminal_colours.scpt 12 35 35

Dieses Applescript wird ausgelöst, sobald die SSH-Sitzung eingerichtet ist. Hiermit wird die Hintergrundfarbe des Terminals auf die angegebenen RGB-Werte gesetzt (oder auf die Standardfarbe zurückgesetzt, wenn keine Farbwerte angegeben sind). Der möglicherweise knifflige Teil besteht darin, das Ende der SSH-Sitzung abzufangen, um die Farben auf die Standardeinstellungen zurückzusetzen. Dafür habe ich das folgende Shell-Skript als ~ / bin / ssh erstellt, um den Standard-Befehl ssh zu überschreiben. Dadurch werden im Wesentlichen alle Aufrufe des SSH-Befehls abgefangen und umbrochen. Ich habe versucht, Aliasing und Funktionen zu verwenden, aber diese Lösung hat am besten funktioniert:

#!/bin/bash
/usr/bin/ssh $@
osascript ~/bin/change_terminal_colours.scpt

Hier ist die Quelle für das Skript change_terminal_colours.scpt . Fügen Sie dies auch in Ihr ~ / bin-Verzeichnis ein:

on run argv
    tell application "Terminal"
        # NOTE: Color values range from 0 to 65535.
        if (count of argv) > 0 then
            set backgroundColor to {(item 1 of argv) * 256, (item 2 of argv) * 256, (item 3 of argv) * 256}
        else
            set backgroundColor to background color of default settings
        end if

        try
            set background color of (selected tab of front window) to backgroundColor
        end try
    end tell
end run

Ich habe diese Lösung vor einer Woche geschrieben und benutze sie seitdem. Ich hoffe, andere finden es von Wert. Ich finde, es funktioniert besser als alle Lösungen, die ich von Googling gefunden habe.


3

Meine Gruppe verwendet visionapp Remote Desktop (2017 bearbeiten: sieht aus wie das Produkt umbenannt wurde, aber ich denke, es ist das gleiche), um sowohl RDP in Windows-Maschinen als auch SSH in Linux. Unsere Verbindungen sind nach Ebenen in Ordnern gruppiert und mit einer Registerkartenfarbe versehen.

Also, wann immer wir eine Produktionsverbindung eröffnen - bam! - wir bekommen ein knallrotes Gesicht:

Bildbeschreibung hier eingeben

Es ist definitiv eine lohnende Investition, wenn Sie ein großer Windows-Shop sind und sich viel auf RDP verlassen. Ich wette, es gibt andere großartige Tools, wenn Sie nur SSH benötigen.


2

Abgesehen von einer eindeutigen Eingabeaufforderung (die die zuverlässigste Lösung zu sein scheint), können Sie bei der Anmeldung von derselben Workstation aus verschiedene Profile für Ihre SSH-Sitzungen verwenden.

Zum Beispiel habe ich einen roten Hintergrund für Produktionssysteme, einen grünen für die Entwicklung, einen blauen für die Infrastruktur (Router usw.) und einen weißen für die lokale Workstation.

Wenn Sie GNOME verwenden, können Sie auf einfache Weise eine SSH-Verbindung mit Ihrem gewünschten Profil herstellen:

gnome-terminal --window-with-profile=production -e 'ssh root@production.example.com'

Der Hauptnachteil - es ist clientseitig, so dass eine spezielle Eingabeaufforderung immer noch die beste Wahl ist, wenn Sie von verschiedenen Standorten aus auf Server zugreifen.


2

Eine weitere Möglichkeit, um zu verdeutlichen, dass Sie sich in einem Produktionssystem befinden, besteht darin, die TMOUT-Funktion (Autologout) im Produktionssystem festzulegen.


1
Wie macht das alles klar? Dies ist möglicherweise auch sehr gefährlich, da Befehle oder Prozesse ausgeführt werden und plötzlich abgebrochen werden, wenn die Sitzung abgemeldet wird.
John Gardeniers

3
Ich habe gerade TMOUT getestet und es sieht so aus, als würde ein lang laufender Befehl die Sitzung nicht beenden. Es wird nur beendet, wenn Sie an der Eingabeaufforderung sitzen. Nils hat das auch vorgeschlagen und es macht für mich Sinn.
sjbotha

1
Das ist das Schöne an TMOUT. Wir haben autolog oder sogar killerd verwendet, bevor wir TMOUT entdeckt haben. Autolog und Killerd sind NICHT so nett. killerd ist auch fehlerhaft und neigt dazu, eine komplette CPU zu blockieren ...
Nils

2

Aufgrund der enormen regulatorischen Anforderungen bei der Arbeit in einer bestimmten Branche werden hier alle Aktivitäten für zukünftige Streitigkeiten protokolliert. Aus diesem Grund ist der Zugriff ebenfalls eingeschränkt, und Sie müssen einige "Menüs" durchgehen, mit denen Sie als einer der wenigen vertrauenswürdigen Benutzer auf einen Computer zugreifen können. Beim Einrichten dieses Systems muss die Person die PRODUKTIONS- oder QS-Umgebung und anschließend den Host, auf den sie zugreifen möchte, aus der Liste auswählen. Dies hat auch eine Zeitüberschreitung, sodass Sie nicht in die Situation geraten, sich bei einem Produkt-Host anzumelden und zu vergessen, in welcher Umgebung Sie sich am nächsten Tag befinden.


2

Ich benutze die Eingabeaufforderung Änderungen wie andere hier. Es ist schnell und böse, funktioniert aber gut für meine Zwecke. Auf einem Produktionssystem werden Sie als normaler Benutzer rot und auf einem Produktsystem als Root in Großbuchstaben angezeigt.

Es könnte in weniger Zeilen geschrieben werden, aber ich mache es so, damit ich die anderen 2 Fälle (nicht root-non-prod) optimieren kann, wenn ich will.

Wir gehen davon aus, dass ein Produktionsserver kein DHCP verwendet. Sie können jedoch auch eine andere Methode verwenden, um zu ermitteln, ob es sich um ein Prod-System handelt. Was auch immer für dich funktioniert.

productionSrv=1
grep -qi bootproto=dhcp /etc/sysconfig/network-scripts/ifcfg-*
if [ "$?" -eq 0 ]; then
    productionSrv=0
fi
hostName=`hostname`
userName=`whoami`
if [ $userName == "root" ]
then
    if [ "$productionSrv" == 1 ]
    then
        hostName=`echo $hostName | tr [:lower:] [:upper:]`
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    else
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    fi
    PATH=$PATH:/sbin/
else
    if [ "$productionSrv" == 1 ]
    then
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    else
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    fi
fi


Obwohl das Skript interessant ist, ist die Annahme statischer IPs nur auf Produktionssystemen nicht üblich. In den meisten Fällen verfügen alle Server über statische IP-Adressen, sowohl in der Entwicklung als auch in der Produktion.
Martijn Heemels

1
Pferde für Kurse wirklich. Unsere Dev-Systeme verwenden DHCP-Reservierungen. Sie können jedes für Sie geeignete System verwenden, z. B. den Hostnamen, das Subnetz oder das VLAN vergleichen.
Sirex

@ Sirex, das Gegenteil ist auch möglich. Die EC2-VPS von Amazon verwenden beispielsweise statische DHCP-Leases auf Produktionsservern, und öffentliche IP-Adressen werden weitergeleitet. Die Instanz selbst weiß nicht direkt, hinter welcher öffentlichen IP sie ausgeführt wird, zumindest nicht auf der Ebene der Netzwerkschnittstelle.
Matthew Scharley

1
Jep. Sie könnten immer nur ein RPM-Rollenpaket haben, das eine / etc / PRODUCTION-Datei erstellt und darauf testet. Was auch immer dir gefällt.
Sirex

1

Verfügen Sie auf den Produktionsmaschinen über ein anderes (möglicherweise längeres) Root-Passwort.

Sie können ein spezielles Sudo (oder einen Sudo-Wrapper) erstellen, sodass eine spezielle Meldung für die Produktionsmaschinen ausgegeben wird.


.. Ein anderes root-Passwort auf Prod-Maschinen? warum habe ich nicht daran gedacht?
user606723

Außerdem verfügt sudo bereits über zahlreiche Konfigurationsoptionen. Es würde mich wundern, wenn Sie das nicht schon können. Ein benutzerdefiniertes Sudo ist eine schreckliche Idee, da es nicht getestet werden würde, um das richtige Ergebnis zu erzielen.
user606723

1

Hier haben wir Standard-Kittkonfigurationen, um die Vordergrundfarbe des gesamten Bildschirms hellrosa zu machen.

  • Prod: leuchtend pink.
  • Regression: blassgrün
  • Modell: Hellblau
  • Dev: normal

Es funktioniert ziemlich gut, aber ich mag einige der anderen Ideen hier.

  • Pro: Es sei denn, etwas verwendet nicht die Vordergrundfarbe. JEDER Prod-Bildschirm ist hellrosa.
  • Con: Offensichtlich, wenn Sie durch etwas anderes als die Standard-Putty-Konfiguration ssh, tut dies jedoch nichts.

1

im .bashrc / .bash_profile

echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " .. 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.