Gibt es eine Möglichkeit, einen Befehl wie last
in einem Ruby-Skript aufzurufen? Ich kann %x
verwenden, um Befehle wie ls
und ls -l
innerhalb eines Skripts aufzurufen, aber wäre das akzeptabel für die komplexen und ständig erweiternden Protokollinformationen, die vom letzten Befehl bereitgestellt werden?Aufruf eines Befehls in einem Ruby-Skript
2
A
Antwort
2
Hier ist ein Beispiel, den Benutzernamen, IP, Inbetriebnahme und Dauer abzurufen:
%x(last -i).each_line do |line|
line.chomp! # Removes newline
break if line.empty? # last is done
# 3 possibilities to extract information :
user, *other_columns = line.split(' ') # 1. Use split
start = Time.parse(line[39,16]) # 2. Use known position of a column
ip = line[22,17].strip
if line =~/\((\d+):(\d+)\)/ # 3. Use a regex
duration = $1.to_i*60+$2.to_i
else
duration = nil
end
info={user: user, ip: ip, start: start, duration: duration}
#TODO: Check that user isn't "reboot"
puts info
end
# {:user=>"ricou", :ip=>"0.0.0.0", :start=>2016-11-01 21:29:00 +0100, :duration=>141}
# {:user=>"ricou", :ip=>"0.0.0.0", :start=>2016-11-01 15:21:00 +0100, :duration=>57}
Welche Informationen benötigen Sie genau?
+0
Die IP-Adressen. Ich dachte mir, ich könnte Match verwenden, um sie zu isolieren, sobald ich herausgefunden habe, wie ich zuletzt arbeiten kann. – yukimoda
+0
Ich habe den Code aktualisiert. Möglicherweise müssen Sie überprüfen, dass die Spalten die gleiche Breite wie meine haben. –
Verwandte Themen
- 1. Aufruf eines Befehls von einem anderen
- 2. Aufruf eines externen Befehls in Swift
- 3. Aufruf eines externen Befehls in Python
- 4. Aufruf eines Befehls von einem übergeordneten Ansichtsmodell mit Verwandten
- 5. Aufruf eines Befehls in einer Schaltfläche funktioniert nicht
- 6. Ausführen eines Befehls in C#
- 7. Ausführung eines Befehls in Java
- 8. Aufruf des Befehls "top" von Systemd Service
- 9. Ausführen eines Befehls und eines Ereignisses von einem a-Tag
- 10. Ergebnis eines Orakel-Befehls
- 11. Druckausführungszeit eines Shell-Befehls
- 12. Capturing Exit-Status eines fehlgeschlagenen Befehls in einem Shell-Skript
- 13. Codierung eines awk-Befehls in einem Perl-Skript
- 14. Hinzufügen eines gerouteten Befehls zu einem Kontrollkästchen in WPF
- 15. Konvertieren eines CURL-Befehls in AJAX
- 16. Aufruf eines Objekts in einem Service
- 17. Ausführen eines grundlegenden Shell-Befehls in Elixir
- 18. Hinzufügen eines Befehls zu Vim
- 19. vb.net Problem Ausführen eines Befehls
- 20. m4 - Ausführen eines Shell-Befehls
- 21. Hinzufügen eines Befehls keymap ATOM
- 22. java - Ausführen eines Befehls in Linux
- 23. Fehler beim Ausführen eines Befehls in Golang
- 24. Ausführen eines Befehls mit Argumenten in Schluck
- 25. Schreiben eines Cmd-Befehls in einer Konsolenanwendung
- 26. django - zirkuläres Importproblem beim Ausführen eines Befehls
- 27. Ausführen eines Befehls vor oder nach einem InSpec-Test
- 28. InvalidOperationException bei Verwendung eines Befehls auf einem zweiten UI-Thread
- 29. Was bedeutet "&" am Ende eines Linux-Befehls?
- 30. Wie wird die Ausgabe eines Befehls durchlaufen?
Siehe http://stackoverflow.com/questions/754494/reading-the-last-n-lines-of-a-file-in-ruby für einen 'last'-Befehl in Ruby. – knut