commit ce8077eccc5233b5f21eb44989f89cd0daa504d1 from: smytht via: GitHub date: Mon Sep 16 22:12:07 2024 UTC Merge pull request #161 from smytht/logger add logger command for entering messages into the .. commit - 309124c7f0f0a02f979d48dca25193c81c97ed27 commit + ce8077eccc5233b5f21eb44989f89cd0daa504d1 blob - b299d8095dc3200663393237ba52811d06204a5d blob + d3c7a2e25bd1707f0b4cdffecf31a4a7c8d5538d --- commands.c +++ commands.c @@ -112,6 +112,7 @@ static int flush_ndp_cache(void); static int flush_history(void); static int is_bad_input(const char *, size_t); static int read_command_line(EditLine *, History *); +static int int_logger(char *, int, int, char **); static int int_ping(char *, int, int, char **); static int int_ping6(char *, int, int, char **); static int int_traceroute(char *, int, int, char **); @@ -132,6 +133,7 @@ static int int_clear(void); static int int_help(void); static int int_exit(void); static int hostname(int, char **); +static int logger(int, char **); static int manual(int, char**); static int nocmd(int, char **); static int docmd(int, char **); @@ -1075,6 +1077,7 @@ flush_help(void) */ static char pinghelp[]; +static char loggerhelp[]; static char ping6help[]; static char tracerthelp[]; static char tracert6help[]; @@ -1145,6 +1148,7 @@ struct intlist Intlist[] = { { "traceroute6", tracert6help, CMPL0 0, 0, int_traceroute6, 0 }, { "ssh", sshhelp, CMPL0 0, 0, int_ssh, 0 }, { "telnet", telnethelp, CMPL0 0, 0, int_telnet, 0 }, + { "logger", loggerhelp, CMPL0 0, 0, int_logger, 0 }, { "do", dohelp, CMPL(c) 0, 0, int_do, 0 }, { "setenv", setenvhelp, CMPL(e) 0, 0, int_setenv, 0 }, { "unsetenv", unsetenvhelp, CMPL(e) 0, 0, int_unsetenv, 0 }, @@ -1231,6 +1235,7 @@ struct intlist Bridgelist[] = { { "traceroute6", tracert6help, CMPL0 0, 0, int_traceroute6, 0 }, { "ssh", sshhelp, CMPL0 0, 0, int_ssh, 0 }, { "telnet", telnethelp, CMPL0 0, 0, int_telnet, 0 }, + { "logger", loggerhelp, CMPL0 0, 0, int_logger, 0 }, { "do", dohelp, CMPL(c) 0, 0, int_do, 0 }, { "setenv", setenvhelp, CMPL(e) 0, 0, int_setenv, 0 }, { "unsetenv", unsetenvhelp, CMPL(e) 0, 0, int_unsetenv, 0 }, @@ -1618,8 +1623,16 @@ int_interface(char *old_ifname, int ifs, int argc, cha strlcpy(next_ifname, new_ifname, sizeof(next_ifname)); return 0; /* do not leave interface context */ +} + +static int +int_logger(char *ifname, int ifs, int argc, char **argv) +{ + logger(argc, argv); + return 0; /* do not leave interface context */ } + static int int_ping(char *ifname, int ifs, int argc, char **argv) { @@ -1833,6 +1846,7 @@ static char verbosehelp[] = "Set verbose diagnostics", editinghelp[] = "Set command line editing", confighelp[] = "Set configuration mode", + loggerhelp[] = "Write a message to syslog on the system", whohelp[] = "Display system users", dohelp[] = "Superfluous, do is ignored and its arguments executed", setenvhelp[] = "Set an environment variable", @@ -1936,6 +1950,7 @@ Command cmdtab[] = { { "ssh", sshhelp, CMPL0 0, 0, ssh, 0, 0, 0, 0 }, { "telnet", telnethelp, CMPL0 0, 0, telnet, 0, 0, 0, 0 }, { "reboot", nreboothelp, CMPL0 0, 0, nreboot, 1, 0, 0, 0 }, + { "logger", loggerhelp, CMPL0 0, 0, logger, 0, 0, 0, 0 }, { "halt", halthelp, CMPL0 0, 0, halt, 1, 0, 0, 0 }, { "powerdown", powerdownhelp, CMPL0 0, 0, powerdown, 1, 0, 0, 0 }, { "write-config", savehelp, CMPL0 0, 0, wr_startup, 1, 0, 0, 0 }, @@ -2203,7 +2218,23 @@ int show_hostname(int argc, char **argv) return 0; } +/* logger command */ + + +int +logger(int argc, char *argv[]) +{ + if (argc < 2) { + printf("%% Invalid arguments\n"); + return 1; + } else { + cmdargs(LOGGER, argv); + } + return 0; +} + + /* * "no" command * This is a pseudo command table entry used for TAB-completion purposes. blob - e56534fea6e9c18e5ce36a0801be214dcae3f482 blob + 97a5efd074846dac2909aadaa8f91bcd97f45152 --- externs.h +++ externs.h @@ -174,6 +174,7 @@ extern pid_t child; #define NSHRC_TEMP "/var/run/nshrc" #define NSHRC "/etc/nshrc" #define CLEAR "/usr/bin/clear" +#define LOGGER "/usr/bin/logger" #define PING "/sbin/ping" #define PING6 "/sbin/ping6" #define TRACERT "/usr/sbin/traceroute" blob - d4b88307bebb7442712e090ea069993ae63c2062 blob + 99dbfbeef9c1b4a46c9c4b8f92ec92d5b98bcf5b --- nsh.8 +++ nsh.8 @@ -174,16 +174,21 @@ is not ambiguous double completes the command. E.g show all available valid commands with double tab key sequence .Bd -literal -offset indent nsh(config-p)/ -! disable halt ldap ospf relay smtp verbose -? do help ldp ospf6 resolv snmp who -arp dvmrp hostname manual pf rip ssh write-config -bgp editing ifstate motd ping route sshd -bridge eigrp ike mpls ping6 rtable telnet -clear enable inet nameserver pipex sasync tftp -configure exit interface ndp powerdown saveenv tftp-proxy -crontab flush ip no quit scheduler traceroute -ddb ftp-proxy ip6 nppp rad setenv traceroute6 -dhcp group ipsec ntp reboot show unsetenv +! enable ldap ping6 show +? exit ldp pipex smtp +arp flush logger powerdown snmp +bgp ftp-proxy manual quit ssh +bridge group motd rad sshd +clear halt mpls reboot telnet +configure help nameserver relay tftp +crontab hostname ndp resolv tftp-proxy +ddb ifstate no rip traceroute +dhcp ike nppp route traceroute6 +disable inet ntp rtable unsetenv +do interface ospf sasync verbose +dvmrp ip ospf6 saveenv who +editing ip6 pf scheduler write-config +eigrp ipsec ping setenv nsh(config-p)/ .Ed If what is typed is ambiguous double tab presents the administrator @@ -339,52 +344,12 @@ nsh(p)/help % Commands may be abbreviated. % Commands are: - hostname Set system hostname - interface Modify interface parameters rtable Routing table switch - group Modify group attributes - arp Static ARP set - ndp Static NDP set - nameserver set or remove static DNS nameservers - bridge Modify bridge parameters show Show system information - ip Set IP networking parameters - ip6 Set IPv6 networking parameters - mpls Set MPLS network parameters - ddb Set DDB parameters - pipex Set PIPEX parameters flush Flush system tables enable Enable privileged mode clear Clear the terminal screen disable Disable privileged mode - route Add a host or network route - pf Packet filter control - ospf OSPF control - ospf6 OSPF6 control - eigrp EIGRP control - bgp BGP control - rip RIP control - ldp LDP control - relay Relay control - ipsec IPsec IKEv1 control - ike IPsec IKEv2 control - dvmrp DVMRP control - rad Router advertisement control - sasync SA synchronization control - dhcp DHCP server control - snmp SNMP server control - ldap LDAP server control - smtp SMTP server control - sshd SSH server control - ntp NTP synchronization control - nppp PPP server control - ifstate ifstate server control - ftp-proxy ftp-proxy server control - tftp-proxy tftp-proxy server control - tftp TFTP server control - resolv Resolver configuration control - motd Message of-the-day - inet Inet super-server control ping Send IPv4 ICMP echo request ping6 Send IPv6 ICMP echo request traceroute Print the route to IPv4 host @@ -392,14 +357,22 @@ nsh(p)/help ssh SSH connection to remote host telnet Telnet connection to remote host reboot Reboot the system + logger Write a message to syslog on the system halt Halt the system powerdown Power the system down write-config Save the current configuration verbose Set verbose diagnostics editing Set command line editing + configure Set configuration mode who Display system users + do Superfluous, do is ignored and its arguments executed + setenv Set an environment variable + unsetenv Delete an environment variable + saveenv Save environment variables set by setenv to ~/.nshenv ! Invoke a subshell or run an executable ? Print help information + manual Display the NSH manual + exit Leave configuration mode and return to privileged mode quit Close current connection nsh(p)/ .Ed @@ -678,6 +651,11 @@ nsh(bridge-bridge100)/? traceroute6 Print the route to IPv6 host ssh SSH connection to remote host telnet Telnet connection to remote host + logger Write a message to syslog on the system + do Superfluous, do is ignored and its arguments executed + setenv Set an environment variable + unsetenv Delete an environment variable + saveenv Save environment variables set by setenv to ~/.nshenv rule Bridge layer 2 filtering rules static Static bridge address entry ifpriority Spanning priority of a member on an 802.1D bridge @@ -689,6 +667,7 @@ nsh(bridge-bridge100)/? parent Parent interface tunneldomain Tunnel parameters protect Configure protected bridge domains + interface Modify interface parameters shutdown Shutdown bridge show Show system information who Display system users @@ -1765,6 +1744,38 @@ The command is an alias for the .Cm crontab command described above. +.Pp +.Tg logger +.Tg syslog +.Tg log +.Tg message +.Ic logger +.Ar log message +.Pp +The logger command allows the user to enter arbitary messages into +the system log. +It can be useful to mark external events of note for diagnostics +and context in analysis later on. +See +.Xr logger 1 +for more information. +.Bl -dash +.It +E.g recording a power outage in the log for future reference. +.Bd -literal -offset indent +nsh(config-p)/logger power failure in facility +nsh(config-p)/logger interface drops due to unprotected devices +nsh(config-p)/!tail /var/log/messages +Sep 8 13:03:30 tobsd /bsd: scsibus2 at vscsi0: 256 targets +Sep 8 13:03:30 tobsd /bsd: softraid0 at root +Sep 8 13:03:30 tobsd /bsd: scsibus3 at softraid0: 256 targets +Sep 8 13:03:30 tobsd /bsd: root on sd0a (619d721c1c3c871d.a) swap on sd0b dump on sd0b +Sep 8 13:03:30 tobsd savecore: /dev/sd0b: Device busy +Sep 8 13:03:55 tobsd reorder_kernel: kernel relinking done +Sep 8 15:05:06 tobsd tom: power failure in facility +Sep 8 15:05:37 tobsd tom: interface drops due to unprotected devices +.Ed +.El .Pp .Tg reboot .Ic reboot @@ -3338,7 +3349,7 @@ nsh(interface-em0)/? % Interface configuration commands are: inet IPv4/IPv6 addresses - ip Alias for the "inet" command + ip Alias for "inet" command autoconf4 IPv4 Autoconfigurable address (DHCP) description Interface description group Interface group @@ -3376,6 +3387,11 @@ nsh(interface-em0)/? traceroute6 Print the route to IPv6 host ssh SSH connection to remote host telnet Telnet connection to remote host + logger Write a message to syslog on the system + do Superfluous, do is ignored and its arguments executed + setenv Set an environment variable + unsetenv Delete an environment variable + saveenv Save environment variables set by setenv to ~/.nshenv keepalive GRE tunnel keepalive mplslabel MPLS local label pwe MPLS PWE3 @@ -3406,6 +3422,13 @@ nsh(interface-em0)/? wgrtable Wireguard routing table trunkport Add child interface(s) to trunk trunkproto Define trunkproto + apn Access Point Name + setpin Set SIM card PIN + setpuk Set new SIM card PIN using PUK for validation + chgpin Permanently change SIM PIN + class Preferred cell classes + roaming Enable data roaming + interface Modify interface parameters shutdown Shutdown interface show Show system information who Display system users @@ -3415,7 +3438,6 @@ nsh(interface-em0)/? ? Options manual Display the NSH manual exit Leave interface config mode and return to global config mode - ? Options .Ed .Pp .Op no