Tôi có thể thay đổi định dạng đầu ra của lệnh Last Last để hiển thị năm không?


7

Tôi đang cố gắng tìm cách báo cáo thông tin đăng nhập gần đây nhất cho tất cả người dùng trên máy chủ Solaris 10 của mình. Tôi đang bắt đầu với đầu ra của lastlệnh. Sử dụng lệnh đó, tôi nhận được đầu ra như thế này:

bd9439    pts/1        vpn-xxx-xx-xxx-x Fri Oct 25 10:46   still logged in
vf7854    pts/1        vpn-xxx-xx-xxx-x Fri Oct 25 10:23 - 10:38  (00:15)

Theo trang man, các định dạng ngày và giờ được kiểm soát bởi miền địa phương. Tôi rất hiếm khi sử dụng cài đặt ngôn ngữ. Có thứ gì tôi có thể sử dụng sẽ thay đổi màn hình để bao gồm phần "năm" của ngày không? Tôi hy vọng sẽ có được một dòng đầu ra tương tự như thế này:

bd9439    pts/1        vpn-xxx-xx-xxx-x Fri Oct 25 2013 10:46   still logged in
vf7854    pts/1        vpn-xxx-xx-xxx-x Fri Oct 25 2013 10:23 - 10:38  (00:15)

Tôi không rõ nếu trang man đang đề cập đến đầu ra của lastchính lệnh hoặc cách dữ liệu thực sự được lưu trữ trong / var / adm / wtmpx.

Nếu có một cách khác để có được thuộc tính "đăng nhập cuối cùng" này, tôi rất vui khi tìm hiểu nó.

Câu trả lời:


7

Trong đó tôi nửa cung cấp bối cảnh, nửa rant

Bạn đang chạy vào một ví dụ về lý do chính mà tôi không thích quản lý các hệ thống Solaris: Không có gì là dễ dàng cả.

Tôi không biết nếu địa phương thực sự sẽ làm bất cứ điều gì ngoại trừ thay đổi thứ tự của các phần nhất định của dấu thời gian xung quanh. Tôi quan tâm nếu có ai biết cách dỗ dành Solaris lasttrong năm, nhưng tôi sẽ không nín thở. Câu thần chú phát triển phần mềm của Sun dường như là "Nó hoạt động về mặt kỹ thuật."

Sun dường như đã phát triển khá nhiều thứ gì đó đúng với yêu cầu hoàn toàn của họ, và sau đó khá nhiều dừng lại ở đó. Vì vậy, bạn kết thúc với các giải pháp được chấp nhận chung như thế này và bạn chỉ cần giữ một bộ sưu tập các cách giải quyết được liệt kê cho các vấn đề phổ biến.

Cách duy nhất mà tôi từng thấy để làm điều này là sử dụng /usr/lib/acct/fwtmpđể đổ toàn bộ nội dung /var/adm/wtmpxvào một đường ống với một số chương trình khác mà tôi sử dụng để điều khiển các đầu ra văn bản ( grep, tac, sed, vv).

Phần thưởng: Vì tìm kiếm phần cuối của tệp và chỉ cần di chuyển trở lại theo wtmpxđộ dài bản ghi cố định sẽ yêu cầu quá nhiều, fwtmpchỉ có thể in ra nội dung wtmpxnhư chúng xuất hiện trong tệp. Vì vậy, bạn phải sử dụng một số phương tiện khác (có thể tac) để đảo ngược các dòng, trừ khi bạn thực sự quan tâm đến thông tin cũ nhất (đó là trường hợp sử dụng ít có khả năng nhất , nhưng tôi lạc đề).

Tùy thuộc vào thời gian hệ thống của bạn hoạt động wtmpxcó thể lớn như thế nào, vì vậy bạn có thể muốn đi lấy một tách cà phê, có thể đi kiểm tra xem lốp xe của bạn có bị thiếu và có thể đọc một hoặc hai cuốn sách trong khi bạn tại đó

Câu trả lời thực tế cho câu hỏi của bạn:

Đây là một lệnh mô phỏng lasttheo cách có thể sử dụng được cho hầu hết những người quan tâm đến việc xem hồ sơ đăng nhập:

# cat /var/adm/wtmpx | /usr/lib/acct/fwtmp | tac | head 

Bạn sẽ nhận thấy tôi phải chuyển đến wtmpxvì họ không cung cấp cho bạn phương tiện chỉ đưa tệp cho fwtmp. Đó là bởi vì việc cung cấp nó thông qua stdinTechnical Works ™ trong phần lớn các trường hợp sử dụng và họ sẽ không phải viết thêm một vài dòng mã. Vì vậy, họ chỉ muốn làm Quản trị viên làm điều đó.

Đây là ví dụ đầu ra ở trên trên của các hệ thống tôi chăm sóc:

[root@atum root]# cat /var/adm/wtmpx | /usr/lib/acct/fwtmp | tac | head
jadavis6                         ts/1 pts/1                                19410  7 0000 0000 1382723864 157168 0 19 ditirlns01.xxx.edu Fri Oct 25 13:57:44 2013
jadavis6                              sshd                                 19404  7 0000 0000 1382723864 133973 0 19 ditirlns01.xxx.edu Fri Oct 25 13:57:44 2013
oracle                                sshd                                  6640  8 0000 0000 1382713401 157107 0 0  Fri Oct 25 11:03:21 2013
oracle                           ts/1 pts/1                                 6647  8 0000 0000 1382713401 150489 0 0  Fri Oct 25 11:03:21 2013
oracle                           ts/1 pts/1                                 6647  7 0000 0000 1382712445 24488 0 23 a0003040148735.xxx.edu Fri Oct 25 10:47:25 2013
oracle                                sshd                                  6640  7 0000 0000 1382712442 304729 0 23 a0003040148735.xxx.edu Fri Oct 25 10:47:22 2013
jadavis6                              sshd                                 23537  8 0000 0000 1382560970 410725 0 0  Wed Oct 23 16:42:50 2013
jadavis6                         ts/1 pts/1                                23544  8 0000 0000 1382560970 404795 0 0  Wed Oct 23 16:42:50 2013
jadavis6                         ts/1 pts/1                                23544  7 0000 0000 1382552999 619524 0 19 ditirlns01.xxx.edu Wed Oct 23 14:29:59 2013
jadavis6                              sshd                                 23537  7 0000 0000 1382552999 602215 0 19 ditirlns01.xxx.edu Wed Oct 23 14:29:59 2013
[root@atum root]#

BIÊN TẬP:

Tôi biết tôi đang than vãn về một điều gì đó nhỏ bé ở đó, nhưng sau một thời gian tôi cảm thấy mệt mỏi với mọi thứ nhỏ nhặt (chẳng hạn như hỏi "năm nào?") Biến thành một googlefest dài một giờ hoặc một thứ gì đó ít nhiều chỉ là bộ lạc kiến thức (như sự tồn tại của fwtmp).


Tôi sẽ tiếp tục chấp nhận câu trả lời này vì nó giải quyết câu hỏi của tôi. Thật không may, tôi mới biết rằng tệp kế toán bị "cuộn" mỗi ngày, vì vậy lastlệnh này là vô dụng đối với tôi. Tôi đã đưa ra một giải pháp khác cho vấn đề ban đầu của mình: Tôi đã thêm vào touch /var/lastlogin/$USERNAME/ etc / profile của mình, nó sẽ tạo hoặc cập nhật tệp bất cứ khi nào ai đó đăng nhập. Khác với việc phải tạo thư mục đó với quyền 777, điều này đáp ứng nhu cầu của tôi. Đi để tìm ra rằng tiếp theo.
BellevueBob

Cũng không siêu đáng tin cậy để có kế toán đăng nhập có thể ghi bởi người dùng thường xuyên. Tôi không thể thực sự tìm thấy nó trực tuyến nhưng một số nơi đang nói rằng pam_exec.soxây dựng thành công trên Solaris. Nếu đó là một vấn đề lớn sẽ an toàn hơn chmod 777.
Bratchley

Tôi dự định viết một tập lệnh để chạy lệnh "chạm" đó bằng tài khoản ứng dụng của mình và thiết lập nó để loại bỏ vấn đề 777. Không bao giờ thực hiện nó trước bản thân mình, nhưng tôi nghĩ nó sẽ dễ dàng vì vậy đó là những gì tôi đang làm việc hướng tới.
BellevueBob

Điều này đã làm tôi khó chịu kể từ lần đầu tiên đọc nó, nhưng bạn có thể thử một số nhị phân setuid (và / hoặc sudo) hoặc nếu tệp nằm trên ZFS, bạn có thể đặt ACL sao cho người dùng chỉ có thể thêm vào nó . Tôi sẽ tiếp tục tìm kiếm / động não và nếu tôi tìm ra thứ gì đó tốt hơn tôi sẽ cho bạn biết. Ngoài ra, bạn có bật kiểm toán BSM không? Điều đó có thể thích hợp hơn vì bạn có thể kiểm toán các sự kiện đăng nhập / đăng xuất sau đó tìm kiếm nhật ký kiểm toán, người dùng thông thường không thể truy cập nó.
Bratchley

Tôi càng nghĩ về nó, tôi càng nghĩ sử dụng BSM để kiểm toán locác sự kiện thực sự là cách để đi đến đây. Đó là một tính năng tiêu chuẩn của HĐH, so với những gì bạn đang làm cụ thể cho cửa hàng của bạn. Nếu bạn bị xe buýt đâm và họ phải thay bạn (hoặc thậm chí chỉ bổ sung cho bạn) thì người đó nên biết tất cả về BSM thay vì phải tự học bất kỳ hệ thống nào bạn đặt cùng nhau.
Bratchley

3

GNU / Linux lastcung cấp công -Ftắc. Tôi sẽ ngạc nhiên nếu Solaris làm, mặc dù.

Trong nội bộ, wtmptệp nên có dấu thời gian epoch và do đó nếu bạn muốn viết một cái gì đó bằng C hoặc Perl, bạn có thể tạo lastlệnh của riêng mình . Bạn sẽ cần xem tệp tiêu đề C thích hợp cho cấu trúc. Đây wtmplà một tệp "nhị phân" và không thể đánh giá bằng các công cụ phân tích cú pháp tiêu chuẩn.

Xem xét định kỳ lưu trữ và cắt bớt wtmptệp của bạn để bạn biết năm nào nó được áp dụng.


Điều này làm việc hoàn hảo cho tôi trên CentOS 6.7. Cảm ơn bạn.
Aaron Wallentine

1

Tôi đã có một trường hợp tương tự, nhưng cần ngày đăng nhập ở định dạng tùy chỉnh của tôi. Điều này làm việc cho tôi:

date -d "`last -F | head -n1 | sed -r 's/.*\.[0-9]+\s+//' | sed -r 's/\s(still|-).*//'`" +"%F_%R"

Không chắc chắn tại sao điều này đã được bỏ phiếu xuống, tôi thấy điều này rất hữu ích!
dmohr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.