Add -pw and -P options, and usage/version message, to plink
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 29 Sep 2000 08:56:30 +0000 (08:56 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Fri, 29 Sep 2000 08:56:30 +0000 (08:56 +0000)
git-svn-id: svn://svn.tartarus.org/sgt/putty@650 cda61777-01e9-0310-a592-d414129be87e

plink.c
ssh.c

diff --git a/plink.c b/plink.c
index 6f979e5..f9c3b03 100644 (file)
--- a/plink.c
+++ b/plink.c
@@ -33,6 +33,8 @@ void connection_fatal (char *p, ...) {
     exit(1);
 }
 
+static char *password = NULL;
+
 /*
  * Stubs for linking with other modules.
  */
@@ -73,7 +75,6 @@ static int get_password(const char *prompt, char *str, int maxlen)
     HANDLE hin, hout;
     DWORD savemode, i;
 
-#if 0 /* this allows specifying a password some other way */
     if (password) {
         static int tried_once = 0;
 
@@ -86,7 +87,6 @@ static int get_password(const char *prompt, char *str, int maxlen)
             return 1;
         }
     }
-#endif
 
     hin = GetStdHandle(STD_INPUT_HANDLE);
     hout = GetStdHandle(STD_OUTPUT_HANDLE);
@@ -129,6 +129,22 @@ int WINAPI stdin_read_thread(void *param) {
     return 0;
 }
 
+/*
+ *  Short description of parameters.
+ */
+static void usage(void)
+{
+    printf("PuTTY Link: command-line connection utility\n");
+    printf("%s\n", ver);
+    printf("Usage: plink [options] [user@]host [command]\n");
+    printf("Options:\n");
+    printf("  -v        show verbose messages\n");
+    printf("  -ssh      force use of ssh protocol\n");
+    printf("  -P port   connect to specified port\n");
+    printf("  -pw passw login with specified password\n");
+    exit(1);
+}
+
 int main(int argc, char **argv) {
     WSADATA wsadata;
     WORD winsock_ver;
@@ -138,6 +154,7 @@ int main(int argc, char **argv) {
     DWORD threadid;
     struct input_data idata;
     int sending;
+    int portnumber = -1;
 
     ssh_get_password = get_password;
 
@@ -158,7 +175,12 @@ int main(int argc, char **argv) {
                 flags |= FLAG_VERBOSE;
            } else if (!strcmp(p, "-log")) {
                 logfile = "putty.log";
-           }
+            } else if (!strcmp(p, "-pw") && argc > 1) {
+                --argc, password = *++argv;
+                printf("pw is %s\n", password);
+            } else if (!strcmp(p, "-P") && argc > 1) {
+                --argc, portnumber = atoi(*++argv);
+            }
        } else if (*p) {
             if (!*cfg.host) {
                 char *q = p;
@@ -238,6 +260,12 @@ int main(int argc, char **argv) {
        }
     }
 
+    if (!*cfg.host) {
+        usage();
+    }
+    if (portnumber != -1)
+        cfg.port = portnumber;
+
     if (!*cfg.remote_cmd)
         flags |= FLAG_INTERACTIVE;
 
diff --git a/ssh.c b/ssh.c
index 6072e7b..fab8f1d 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -1455,7 +1455,7 @@ static int do_ssh1_login(unsigned char *in, int inlen, int ispkt)
             free(comment);
         }
 
-       if (!(flags & FLAG_INTERACTIVE)) {
+       if (ssh_get_password) {
            if (!ssh_get_password(prompt, password, sizeof(password))) {
                 /*
                  * get_password failed to get a password (for
@@ -2193,7 +2193,7 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt)
            }
        }
 
-       if (!(flags & FLAG_INTERACTIVE)) {
+       if (ssh_get_password) {
            char prompt[200];
            sprintf(prompt, "%.90s@%.90s's password: ", cfg.username, savedhost);
            if (!ssh_get_password(prompt, password, sizeof(password))) {