Festlegen einer benutzerdefinierten Bash-Eingabeaufforderung über SSH oder Putty

Festlegen einer benutzerdefinierten Bash-Eingabeaufforderung über SSH oder Putty

Wenn ich mich bei Servern anmelde, möchte ich die Zeit in meiner Bash-Eingabeaufforderung angezeigt bekommen, damit ich sehen kann, wann ich die Dinge, die ich zuvor getan habe, erledigt habe. Ich denke, das ist eine besonders nützliche Funktion, wenn man versucht, Dinge zu debuggen.
Es kann so aussehen:

[root@server 11:46:02 ~]# ls
file1 file2
[root@server 11:47:50 ~]# whoami
root

Ich habe festgestellt, dass ich dies irgendwie mit Folgendem tun kann ssh:

ssh root@server -t "export PS1='[\u@\h $(date +%H:%M:%S) \W]\$ '; exec bash"

ssh root@server -t "export PS1='[\u@\h \t \W]\$ '; exec bash"

Aber offensichtlich wird das Datum nicht jedes Mal aktualisiert, wenn ich etwas Neues eingebe.
Ich habe noch nicht herausgefunden, wie das von PuTTY aus geht – ich sehe, dass es unter Verbindungen -> Daten eine Einstellung gibt, um Umgebungsvariablen an den Server zu senden, aber das funktioniert nicht.

Beachten Sie, dass ich auf der Serverseite nichts ändern möchte (keine SSHD-Änderung, keine Bashrc- oder Profiländerung) :)

Antwort1

Mit Putty kann ich Ihnen nicht helfen, aber beachten Sie, dass Bash einen Code für die aktuelle Zeit hat, den Sie $(date +%H:%M:%S)durch ersetzen können \t.

Antwort2

Obwohl ich die Antwort für PuTTY nicht wirklich gefunden habe, habe ich einebesserAlternative:
1. installierenCygwin(und eine höhere Produktivität genießen)
2. eine Cygwin-Verknüpfung zu meinem PATH hinzufügen, damit ich WIN+R drücken und cyg eingeben kann, um das Terminal zu öffnen.
3. diese Funktion in Cygwin ~/.bashrc hinzufügen:

ssh () { /usr/bin/ssh "$@" -t "export PS1='[\t \u@\h \W]\$ '; exec bash"; }

Cygwin erneut öffnen oder source ~/.bashrcund ssh user@serverund Eingabeaufforderung ist, wie ich es will *:
[12:03:08 user@server ~]$

*Funktioniert unter CentOS oder AWS Linux. Funktioniert nicht unter Ubuntu, da es $PS1 überschreibt.

Haftungsausschluss: hänge unter Windows fest, kann weder Ubuntu noch Dual-Boot installieren. VM keine Option. /Cry

Antwort3

Nicht ganz so aufdringliche Variante für Ubuntu (aktiviert einfach die Farbaufforderung in der Remote-.bashrc-Datei):

ssh user@server -t "sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/g' .bashrc;exec bash"

verwandte Informationen