Größter Befehlszeilenfehler? [abgeschlossen]

Was ist der größte Schaden (egal welcher Art), den du jemals mit einer einzigen falschen / falschen / fehlgeleiteten Kommandozeile verursacht hast? Ich habe eine Produktions-System-Datenbank versehentlich eine Weile zurück, zum Beispiel, aber ich war glücklich (dh gesichert) und es gab keine permanenten Datenverlust, verloren Geld, Sachschaden etc.

Am wichtigsten (für Stimmen), was tun Sie, um sicherzustellen, dass es nicht immer wieder passieren wird?

14 Solutions collect form web for “Größter Befehlszeilenfehler? [abgeschlossen]”

Im SQL-Server, auf einem Produktionssystem:

update customer set password = '' <enter> 

Die jüngste Sicherung war wie eine Woche alt.

Um dies zu mildern, schreibe ich jetzt normalerweise eine select Aussage, um sicherzustellen, dass ich die where Klausel richtig habe, dann geh zurück und bearbeite sie, um die set Klausel einzufügen und die Anweisung zu update .

Größter Fehler? Ich dachte, ich hätte zwei Variablen gesetzt, als ich nicht hatte. Also rm -rf $ VARIABLE / $ VARIABLE2 wurde rm -rf /. FreeBSD hat vor kurzem ihr rm-Tool aktualisiert, so dass rm -rf / nicht mehr möglich ist, gerade wegen dieses Fehlers!

 shutdown -h now 

Bedeutete für die lokale Workstation, aber tippte es, während sie über ssh auf Produktionsserver protokolliert wurde. Seitdem habe ich immer Hostname in meinem $PS1 .

Auslassen des -r aus einem Shutdown-Befehl. Auf einem entfernten Server. Auf der anderen Seite des Landes. Ohne IT-Mitarbeiter im Fernbüro.

Wir haben alles getan, es ist fast wie ein Ritus der Passage in diesem Stadium.

Auf einem VMS-System habe ich den ASSIGN-DCL-Befehl verwendet, um logische Namen zuzuordnen, und ich wollte eine vorherige ASSIGN-Befehlszeile wiederherstellen. Jetzt, in VMS, hast du nur so viele Zeichen eines Befehls eingegeben, um es eindeutig zu machen. Also habe ich beabsichtigt zu geben

REC ASS

Aber ich habe versehentlich eingegeben

REQ ASS

stattdessen. REQ war hinreichend eindeutig für den Befehl REQUEST, der das Argument an alle mit Betreiber privates sendet (was jeder in IT war). So erhielt die gesamte Abteilung meine Broadcast-Nachricht, die einfach "ASS" war.

Auf einem Solaris-System: "killall dataLoader".

'DataLoader' war eine App, an der ich arbeite. Unter Linux arbeitet killall wie pkill. Es sendet ein Signal an Prozesse, die mit einem String übereinstimmen, der als Argument angegeben wird. Bei Solaris versucht killall alles auf dem System zu töten, kann der aktuelle Benutzer töten. Ich war wurzel

Einmal, viele viele Monde vor, musste ich eine bestimmte ausführbare Datei finden, konnte mich aber nicht an den vollständigen Namen erinnern (aber ich konnte mich an einige der Briefe erinnern). Also habe ich gedacht, dass ich das / usr / bin-Verzeichnis mit so etwas wie möglich überprüfen würde

 rm /usr/bin/i*g* 

Komisch. Nichts ist zurückgekehrt. Ich habe gerade den zweiten Brief falsch gemacht, ich habe es noch einmal versucht

 rm /usr/bin/i* 

Wieder nichts Nachdem ich dasselbe mit / usr / local / bin, / usr / sbin und irgendetwas anderes gedacht habe, dachte ich, dass es sein könnte, erkannte ich, dass ich den Befehl "ls" falsch gemacht hatte.

Ich weiß nicht genau, woher der brainfart kam, aber es ist definitiv kein Fehler, den ich jemals wieder gemacht habe.

 setup.exe 

Es war Windows Vista.

Der Versuch, das Eigentum an allem in einem Verzeichnis zu ändern, einschließlich Punktdateien, mit:

 chown -R user * .* 

Vermutung was das tut?

Bedeutet, zu zerstören / dev / sdb, zum Glück hatte ich eine gute up-to-date-Backup

 dd if=/dev/urandom of=/dev/sda 
 select * from <File1> join <file2> 

Auf einer Produktionsbox. Beachten Sie das Fehlen einer Klausel. 🙂 Beide Tabellen waren Multi-Millionen-Zeilentabellen, und dies war auf einem AS / 400 in der Mitte der 90er Jahre, wo einmal die SQL ausgeführt wurde, konnte man es nicht töten.

Auf einem unserer Datenproduktionsserver wurde eine meiner Wurzeln eingegeben:

Chmod -R 777 /

Weil er mit einigen Scripts Berechtigungsfehler bekommen hat …

Kurz darauf wurde sein privater Schlüssel von allen Servern entfernt und er kümmerte sich um die 1TB Datenwiederherstellung auf dem Datenproduktionsserver …

Mein Liebling war, als ich an der Universität war. Ich habe eine Anwendung aufgebaut (ich erinnere mich nicht, was) und da war ich nicht Wurzel, mit der ich es gebaut hatte

 PREFIX=~username/usr/local 

So könnte ich es in meinem Home-Verzeichnis installieren. Leider ist es in installiert

 /home/username/src/app/~username/usr/local 

stattdessen. Natürlich, um es zu löschen, wie es wieder gestartet wurde, habe ich ausgeführt

 rm -rf ~username 

Im Quellverzeichnis.

Ich fragte mich, warum es so lange dauert …

🙂

Allerdings war mein schlimmstes, als ich mit einem Solaris Workstation arbeitete und nachdem ich alles eingerichtet hatte, wollten wir die Konfiguration für Live Config abwischen. Also habe ich hingerichtet

 sys-unconfig 

Einverstanden mit der Warnmeldung und anstatt der Maschine neu zu starten und zurück zu "Werksvorgaben" Das xterm Fenster sagte einfach

 connection closed by foreign host. 

Moral der Geschichte Lassen Sie niemals eine Wurzelschale auf einem anderen Gastgeber offen! JE!!

Vor vielen Jahren war ich zu Hause kodiert einige Sachen in PHP bei der Arbeit an einem Projekt mit einem Kumpel von mir, die der Betreuer des Projekts war. Wir haben uns in einer Zusammenarbeit bemüht. Wir schweifen immer im Spiel.

Ich versuchte, ssh-agent zu bekommen, um richtig auf meiner Maschine zu arbeiten, während wir einen religiösen Krieg von Perl gegen PHP hatten. Dann habe ich etwas über ssh-Agent erwähnt, das muss ausgetauscht werden (nicht sicher, warum ich das gesagt habe). Also dann hat er mir diese Nachricht in einer Anstrengung geschickt, also dachte ich, mir bei meinem Problem zu helfen (bedenkt, dass ich zu wurzeln war):

 \# eval $(echo ssh-agent | perl -pe 's/ha/m -r/' | perl -pe 's/^ss/r/' | perl -pe 's/gent/f \//') 

WARNUNG! NICHT LÄUFT DIESES BEFEHL !!!

Wenn du die eval beseitest und den inneren Befehl selbst leitetest, ist es:

 rm -rf / 

Es brauchte mir alle 4 Sekunden, um zu bemerken, was geschehen war, aber der Schaden war bereits getan. Ich musste mein Betriebssystem neu installieren. Glücklicherweise war nichts von meiner Arbeit ausgelöscht, außer einige Sachen in / etc iirc. Er hatte ein riesiges Lachen, als ich ihm eine Nachricht des Schreckens schickte, warum er das tat. Wir sind beide langfristige Systemingenieure. Er dachte nicht, dass ich es laufen würde und würde es vorsichtiger sein, es zu überprüfen, bevor es einfach war, und ich habe ihm nur vertraut, also habe ich nicht einmal darüber nachgedacht, dass er herumspielt. Unnötig zu sagen, diese kleine Geschichte kommt die ganze Zeit zwischen uns. Also habe ich beschlossen, es zu verewigen.

Wie habe ich das schon wieder geschehen? Ich vertraue niemandem!

Eine andere weniger interessante Geschichte ist ein paar Jahre zurück Ich habe einige Arbeiten an einer Mission kritischen Box bei der Arbeit gemacht. Ich hatte ein paar Begriffe offen für verschiedene Maschinen. Ich musste einige überflüssige Sachen in einem Verzeichnis entfernen. Nun, ich bin in meinen Worten verloren und versehentlich rm'ed . In meinem lokalen Verzeichnis aber auf dem falschen Gastgeber (falscher Begriff) !! Ich habe den Befehl in / var / lib / mysql anstelle von / tmp auf dem Applikationsserver (unterschiedlicher Begriff) ausgeführt. Unnötig zu sagen, ich habe die Produktionsdatenbank ausgelöscht. Glücklicherweise hatten wir einen warmen Standby, dass wir uns umgedreht haben, während ich und ein Mitarbeiter die primäre aus den Backups und dem Standby umgebaut haben. Das dauerte etwa 18 stunden zu tun

Mitigation: mehr vorsichtig, welche Fenster ich Befehle ausführen, bevor sie sie ausführen.

  • Verwenden von django für CLI-Tool
  • Python-CLI-Programmeinheitsprüfung
  • Erstellen einer CLI (Shell?) In Python
  • Wie kann ich PYTHONPATH auf einem Mac bearbeiten?
  • Python ist die beste Programmiersprache der Welt.