{"id":1044,"date":"2024-12-17T15:07:03","date_gmt":"2024-12-17T15:07:03","guid":{"rendered":"https:\/\/monkey.ploogie.co.uk\/?page_id=1044"},"modified":"2024-12-17T15:07:03","modified_gmt":"2024-12-17T15:07:03","slug":"unix-finger-command","status":"publish","type":"page","link":"https:\/\/monkey.ploogie.co.uk\/index.php\/unix-finger-command\/","title":{"rendered":"Unix finger command"},"content":{"rendered":"<pre>\r\n#!\/usr\/bin\/env mwnci\r\ninclude(\"pwd\")\r\ncli_args=shift(ARGV)\r\nif (len(cli_args) == 0) {\r\n    println(\"Usage: \", PROGNAME, \" <user> ...\")\r\n    exit(1)\r\n}\r\n\r\nforeach user in cli_args {\r\n    office=\"\"\r\n    office_phone=\"\"\r\n    home_phone=\"\"\r\n    real_name=user\r\n    pw=getpwent(user)\r\n    if (len(pw) == 0) {\r\n        println(PROGNAME, \": Unknown user: \", user)\r\n    } else {\r\n        if (len(pw[\"Gecos\"]) > 0) {\r\n            if (pw[\"Gecos\"][0]) {real_name=pw[\"Gecos\"][0]}\r\n            if (pw[\"Gecos\"][1]) {office=pw[\"Gecos\"][1]}\r\n            if (pw[\"Gecos\"][2]) {office_phone=pw[\"Gecos\"][2]}\r\n            if (pw[\"Gecos\"][3]) {home_phone=pw[\"Gecos\"][3]}\r\n            office_line=trimprefix(office + \", \" + office_phone, \", \")\r\n            office_line=trimsuffix(office_line, \", \")\r\n        }\r\n\r\n        printf(\"Login: %-33sName: %s\\n\", pw[\"User\"], real_name)\r\n        printf(\"Directory:%-30sShell: %s\\n\", pw[\"Home\"], pw[\"Shell\"])\r\n\r\n        if (len(office_line) > 0) {\r\n            printf(\"Office: %-32s\", office_line)\r\n        }\r\n\r\n        if (len(home_phone) > 0) {\r\n            println(\"Home Phone: \", home_phone)\r\n        }\r\n\r\n        logged_in=false\r\n        user_who=split(system(\"who\"),\"\\n\")\r\n        foreach line in user_who {\r\n            fline=fields(line)\r\n            if (fline[0] == user) {\r\n                printf(\"On since %s %s %s on %s\\n\",\r\n\t               fline[2], fline[3], fline[4], fline[1])\r\n                logged_in=true\r\n            }\r\n        }\r\n\r\n        if (!logged_in) {\r\n            cmd=sprintf(\"last %s | head -1\", user)\r\n            user_last=trim(system(cmd))\r\n            if (len(user_last) == 0) {\r\n                println(\"Never logged in.\")\r\n            } else {\r\n                fline=fields(user_last)\r\n\t        printf(\"Last login %s %s %s %s on %s\\n\",\r\n\t               fline[2], fline[3], fline[4], fline[5], fline[1])\r\n            }\r\n        }\r\n\r\n        PLAN=sprintf(\"%s\/.plan\", pw[\"Home\"])\r\n        PROJECT=sprintf(\"%s\/.project\", pw[\"Home\"])\r\n\r\n        if (file(PROJECT)) {\r\n            println(\"Project:\\n\", cat(PROJECT))\r\n        }\r\n\r\n        if (!file(PLAN)) {\r\n            println(\"No plan.\")\r\n\t} else {\r\n\t    println(\"Plan:\\n\", cat(PLAN))\r\n        }\r\n        println()\r\n    }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>#!\/usr\/bin\/env mwnci include(&#8220;pwd&#8221;) cli_args=shift(ARGV) if (len(cli_args) == 0) { println(&#8220;Usage: &#8220;, PROGNAME, &#8221; &#8230;&#8221;) exit(1) } foreach user in cli_args { office=&#8221;&#8221; office_phone=&#8221;&#8221; home_phone=&#8221;&#8221; real_name=user pw=getpwent(user) if (len(pw) == 0) { println(PROGNAME, &#8220;: Unknown user: &#8220;, user) } else { if (len(pw[&#8220;Gecos&#8221;]) > 0) { if (pw[&#8220;Gecos&#8221;][0]) {real_name=pw[&#8220;Gecos&#8221;][0]} if (pw[&#8220;Gecos&#8221;][1]) {office=pw[&#8220;Gecos&#8221;][1]} if (pw[&#8220;Gecos&#8221;][2]) {office_phone=pw[&#8220;Gecos&#8221;][2]} if &hellip; <a href=\"https:\/\/monkey.ploogie.co.uk\/index.php\/unix-finger-command\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Unix finger command&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1044","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/1044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/comments?post=1044"}],"version-history":[{"count":2,"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/1044\/revisions"}],"predecessor-version":[{"id":1046,"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/pages\/1044\/revisions\/1046"}],"wp:attachment":[{"href":"https:\/\/monkey.ploogie.co.uk\/index.php\/wp-json\/wp\/v2\/media?parent=1044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}