diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 32b626c..20f7df4 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -272,10 +272,10 @@
 }
 
 /* Command execution over the vty interface. */
-static void
+static int
 vtysh_execute_func (const char *line, int pager)
 {
-  int ret, cmd_stat;
+  int ret, cmd_stat = CMD_SUCCESS;
   u_int i;
   vector vline;
   struct cmd_element *cmd;
@@ -288,7 +288,7 @@
   vline = cmd_make_strvec (line);
 
   if (vline == NULL)
-    return;
+    return CMD_SUCCESS;
 
   saved_ret = ret = cmd_execute_command (vline, vty, &cmd, 1);
   saved_node = vty->node;
@@ -394,7 +394,7 @@
 			  }
 			fp = NULL;
 		      }
-		    return;
+		    return CMD_SUCCESS;
 		  }
 
 		ret = cmd_execute_command (vline, vty, &cmd, 1);
@@ -435,18 +435,19 @@
 	}
       fp = NULL;
     }
+  return cmd_stat;
 }
 
-void
+int
 vtysh_execute_no_pager (const char *line)
 {
-  vtysh_execute_func (line, 0);
+  return vtysh_execute_func (line, 0);
 }
 
-void
+int
 vtysh_execute (const char *line)
 {
-  vtysh_execute_func (line, 1);
+  return vtysh_execute_func (line, 1);
 }
 
 /* Configration make from file. */
diff --git a/vtysh/vtysh.h b/vtysh/vtysh.h
index 3ed0dd3..e711d59 100644
--- a/vtysh/vtysh.h
+++ b/vtysh/vtysh.h
@@ -42,8 +42,8 @@
 void vtysh_readline_init (void);
 void vtysh_user_init (void);
 
-void vtysh_execute (const char *);
-void vtysh_execute_no_pager (const char *);
+int vtysh_execute (const char *);
+int vtysh_execute_no_pager (const char *);
 
 char *vtysh_prompt (void);
 
diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c
index d655e07..55a430d 100644
--- a/vtysh/vtysh_main.c
+++ b/vtysh/vtysh_main.c
@@ -58,6 +58,9 @@
 /* Master of threads. */
 struct thread_master *master;
 
+/* Command logging */
+FILE *logfile;
+
 /* SIGTSTP handler.  This function care user's ^Z input. */
 void
 sigtstp (int sig)
@@ -191,6 +194,18 @@
   return (line_read);
 }
 
+static void log_it(const char *line)
+{
+  time_t t = time(NULL);
+  struct tm *tmp = localtime(&t);
+  char *user = getenv("USER") ? : "boot";
+  char tod[64];
+
+  strftime(tod, sizeof tod, "%Y%m%d-%H:%M.%S", tmp);
+  
+  fprintf(logfile, "%s:%s %s\n", tod, user, line);
+}
+
 /* VTY shell main routine. */
 int
 main (int argc, char **argv, char **env)
@@ -210,6 +225,10 @@
   /* Preserve name of myself. */
   progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]);
 
+  /* if logging open now */
+  if ((p = getenv("VTYSH_LOG")) != NULL)
+      logfile = fopen(p, "a");
+
   /* Option handling. */
   while (1) 
     {
@@ -299,19 +318,39 @@
 
       while (cmd != NULL)
         {
+	  int ret;
 	  char *eol;
 
 	  while ((eol = strchr(cmd->line, '\n')) != NULL)
 	    {
 	      *eol = '\0';
+
 	      if (echo_command)
-	        printf("%s%s\n", vtysh_prompt(), cmd->line);
-	      vtysh_execute_no_pager(cmd->line);
+		printf("%s%s\n", vtysh_prompt(), cmd->line);
+	      
+	      if (logfile)
+		log_it(cmd->line);
+
+	      ret = vtysh_execute_no_pager(cmd->line);
+	      if (ret != CMD_SUCCESS 
+		  && ret != CMD_SUCCESS_DAEMON
+		  && ret != CMD_WARNING)
+		exit(1);
+
 	      cmd->line = eol+1;
 	    }
+
 	  if (echo_command)
 	    printf("%s%s\n", vtysh_prompt(), cmd->line);
-	  vtysh_execute_no_pager (cmd->line);
+
+	  if (logfile)
+	    log_it(cmd->line);
+
+	  ret = vtysh_execute_no_pager(cmd->line);
+	  if (ret != CMD_SUCCESS 
+	      && ret != CMD_SUCCESS_DAEMON
+	      && ret != CMD_WARNING)
+	    exit(1);
 
 	  {
 	    struct cmd_rec *cr;
