Unix AIX passing variable and arguments to expect and spawn





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







4















I am writing a script to scp some files but need to pass file location through the user or another script as an argument



#!/usr/bin/expect

set FILEPATH1 $1

spawn sh "scp $FILEPATH1 $USER@$HOST:/destination/files"
set pass "pass123"
expect {
password: {send "$passr"; exp_continue}
}


also tried this before the spawn and before the #!/usr/bin/expect



FILEPATH1=$1









share|improve this question









New contributor




OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.



























    4















    I am writing a script to scp some files but need to pass file location through the user or another script as an argument



    #!/usr/bin/expect

    set FILEPATH1 $1

    spawn sh "scp $FILEPATH1 $USER@$HOST:/destination/files"
    set pass "pass123"
    expect {
    password: {send "$passr"; exp_continue}
    }


    also tried this before the spawn and before the #!/usr/bin/expect



    FILEPATH1=$1









    share|improve this question









    New contributor




    OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      4












      4








      4








      I am writing a script to scp some files but need to pass file location through the user or another script as an argument



      #!/usr/bin/expect

      set FILEPATH1 $1

      spawn sh "scp $FILEPATH1 $USER@$HOST:/destination/files"
      set pass "pass123"
      expect {
      password: {send "$passr"; exp_continue}
      }


      also tried this before the spawn and before the #!/usr/bin/expect



      FILEPATH1=$1









      share|improve this question









      New contributor




      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      I am writing a script to scp some files but need to pass file location through the user or another script as an argument



      #!/usr/bin/expect

      set FILEPATH1 $1

      spawn sh "scp $FILEPATH1 $USER@$HOST:/destination/files"
      set pass "pass123"
      expect {
      password: {send "$passr"; exp_continue}
      }


      also tried this before the spawn and before the #!/usr/bin/expect



      FILEPATH1=$1






      shell-script aix scp expect






      share|improve this question









      New contributor




      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question









      New contributor




      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question








      edited 5 hours ago







      OmAr













      New contributor




      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 6 hours ago









      OmArOmAr

      233




      233




      New contributor




      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      OmAr is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






















          1 Answer
          1






          active

          oldest

          votes


















          6














          This isn't doing what you want:



          set FILEPATH1 $1


          Tcl (and expect) don't use the shell-style $1, $2, ... way of accessing the command line arguments. You want to use the global $argv list:



          set FILEPATH1 [lindex $argv 0]


          Also, your spawn call is incorrect. sh will be looking for a file named "scp $FILEPATH1 $USER@$HOST:/destination/files". You dont need a shell to spawn scp:



          spawn scp $FILEPATH1 $USER@$HOST:/destination/files


          Now, where are USER and HOST coming from? Are they environment variables? If so:



          spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files


          And, you're not waiting for the transfer to actually complete before your script exits. Do this:



          expect password:
          send "$passr"
          set timeout -1
          expect eof


          I'm assuming that you're only prompted for the password once. If you have to enter it multiple times, then



          expect {
          password: {
          send "$passr"
          set timeout -1
          exp_continue
          }
          eof
          }





          share|improve this answer
























          • Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

            – OmAr
            5 hours ago














          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "106"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });






          OmAr is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f513847%2funix-aix-passing-variable-and-arguments-to-expect-and-spawn%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          6














          This isn't doing what you want:



          set FILEPATH1 $1


          Tcl (and expect) don't use the shell-style $1, $2, ... way of accessing the command line arguments. You want to use the global $argv list:



          set FILEPATH1 [lindex $argv 0]


          Also, your spawn call is incorrect. sh will be looking for a file named "scp $FILEPATH1 $USER@$HOST:/destination/files". You dont need a shell to spawn scp:



          spawn scp $FILEPATH1 $USER@$HOST:/destination/files


          Now, where are USER and HOST coming from? Are they environment variables? If so:



          spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files


          And, you're not waiting for the transfer to actually complete before your script exits. Do this:



          expect password:
          send "$passr"
          set timeout -1
          expect eof


          I'm assuming that you're only prompted for the password once. If you have to enter it multiple times, then



          expect {
          password: {
          send "$passr"
          set timeout -1
          exp_continue
          }
          eof
          }





          share|improve this answer
























          • Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

            – OmAr
            5 hours ago


















          6














          This isn't doing what you want:



          set FILEPATH1 $1


          Tcl (and expect) don't use the shell-style $1, $2, ... way of accessing the command line arguments. You want to use the global $argv list:



          set FILEPATH1 [lindex $argv 0]


          Also, your spawn call is incorrect. sh will be looking for a file named "scp $FILEPATH1 $USER@$HOST:/destination/files". You dont need a shell to spawn scp:



          spawn scp $FILEPATH1 $USER@$HOST:/destination/files


          Now, where are USER and HOST coming from? Are they environment variables? If so:



          spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files


          And, you're not waiting for the transfer to actually complete before your script exits. Do this:



          expect password:
          send "$passr"
          set timeout -1
          expect eof


          I'm assuming that you're only prompted for the password once. If you have to enter it multiple times, then



          expect {
          password: {
          send "$passr"
          set timeout -1
          exp_continue
          }
          eof
          }





          share|improve this answer
























          • Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

            – OmAr
            5 hours ago
















          6












          6








          6







          This isn't doing what you want:



          set FILEPATH1 $1


          Tcl (and expect) don't use the shell-style $1, $2, ... way of accessing the command line arguments. You want to use the global $argv list:



          set FILEPATH1 [lindex $argv 0]


          Also, your spawn call is incorrect. sh will be looking for a file named "scp $FILEPATH1 $USER@$HOST:/destination/files". You dont need a shell to spawn scp:



          spawn scp $FILEPATH1 $USER@$HOST:/destination/files


          Now, where are USER and HOST coming from? Are they environment variables? If so:



          spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files


          And, you're not waiting for the transfer to actually complete before your script exits. Do this:



          expect password:
          send "$passr"
          set timeout -1
          expect eof


          I'm assuming that you're only prompted for the password once. If you have to enter it multiple times, then



          expect {
          password: {
          send "$passr"
          set timeout -1
          exp_continue
          }
          eof
          }





          share|improve this answer













          This isn't doing what you want:



          set FILEPATH1 $1


          Tcl (and expect) don't use the shell-style $1, $2, ... way of accessing the command line arguments. You want to use the global $argv list:



          set FILEPATH1 [lindex $argv 0]


          Also, your spawn call is incorrect. sh will be looking for a file named "scp $FILEPATH1 $USER@$HOST:/destination/files". You dont need a shell to spawn scp:



          spawn scp $FILEPATH1 $USER@$HOST:/destination/files


          Now, where are USER and HOST coming from? Are they environment variables? If so:



          spawn scp $FILEPATH1 $env(USER)@$env(HOST):/destination/files


          And, you're not waiting for the transfer to actually complete before your script exits. Do this:



          expect password:
          send "$passr"
          set timeout -1
          expect eof


          I'm assuming that you're only prompted for the password once. If you have to enter it multiple times, then



          expect {
          password: {
          send "$passr"
          set timeout -1
          exp_continue
          }
          eof
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 5 hours ago









          glenn jackmanglenn jackman

          53.3k573115




          53.3k573115













          • Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

            – OmAr
            5 hours ago





















          • Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

            – OmAr
            5 hours ago



















          Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

          – OmAr
          5 hours ago







          Thank you for clarification and modifications it helped too, Answering your question "Now, where are USER and HOST coming from?" - I am entering them manually for now but looking forward to get current user's USER and put the Password as an argument later to avoid exploiting my password publicly as my team dont have the ability for private-public keys and the script will be used by more than one member, any help in that matter will be apreciated :-)

          – OmAr
          5 hours ago












          OmAr is a new contributor. Be nice, and check out our Code of Conduct.










          draft saved

          draft discarded


















          OmAr is a new contributor. Be nice, and check out our Code of Conduct.













          OmAr is a new contributor. Be nice, and check out our Code of Conduct.












          OmAr is a new contributor. Be nice, and check out our Code of Conduct.
















          Thanks for contributing an answer to Unix & Linux Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f513847%2funix-aix-passing-variable-and-arguments-to-expect-and-spawn%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Category:香港粉麵

          List *all* the tuples!

          Channel [V]