[Samba] Re: How can $VARIABLES be used inside smbclient -c'xyz' command strings?

Joel Hammer Joel at HammersHome.com
Tue May 21 19:05:02 GMT 2002


IT LOOKS like the function doesn't have direct
access to the command line variables, which I never knew, so just do this:
Name1=$1
Name2=$2
And then subsitute $Name1 and $Name2 into the function. Meanwhile, I'll read
about functions and the scope of variables.
Joel

On Wed, May 22, 2002 at 03:46:52AM +0200, Kurt Pfeifle wrote:
> Joel Hammer wrote:
> > Can you post a sample of your script wherein the $1 variable fails to be
> > expanded to its value?
> > Joel
> > 
> 
> OK, here is a sample.
> --------------------
>     #!/bin/bash
>     #"testscript2"
>     cp $1 $1.kdk
>     echo $1
>     echo $1.kdk
>     echo trying to send job  $1
>     echo trying to send job  $1.kdk
>     smbclient //turbo/mopi240 -N -c "put $1;put $1.kdk"          # this works
>     sendJob() {
>       echo trying to send job \(from inside a function\) $1      # this doesn't work
>       echo trying to send job \(from inside a function\) $1.kdk  # this doesn't work
>       smbclient //turbo/mopi240 -N -c "put $1;put $1.kdk"        # this doesn't work
>       echo "Exitstatus von smbclient  $?"
>     }
>     sendJob
>       echo "Job sent?"
> 
> 
> I get this output:
> ------------------
>     kde4 at transmeta:~/JobTix> sh testscript2 testscript
>     testscript
>     testscript.kdk
>     trying to send job testscript
>     trying to send job testscript.kdk
>     INFO: Debug class all level = 3   (pid 8444 from pid 8444)
>     added interface ip=10.160.16.40 bcast=10.160.31.255 nmask=255.255.240.0
>     added interface ip=172.16.158.1 bcast=172.16.158.255 nmask=255.255.255.0
>     Got a positive name query response from 10.160.16.2 ( 10.160.16.2 )
>     Domain=[SYSTEMSUPPORT] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
>     putting file testscript as \testscript (0.9 kb/s) (average 0.9 kb/s)
>     putting file testscript.kdk as \testscript.kdk (1.0 kb/s) (average 0.9 kb/s)
>     trying to send job (from inside a function)
>     trying to send job (from inside a function) .kdk
>     INFO: Debug class all level = 3   (pid 8445 from pid 8445)
>     added interface ip=10.160.16.40 bcast=10.160.31.255 nmask=255.255.240.0
>     added interface ip=172.16.158.1 bcast=172.16.158.255 nmask=255.255.255.0
>     Got a positive name query response from 10.160.16.2 ( 10.160.16.2 )
>     Domain=[SYSTEMSUPPORT] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
>     put <filename>
>     .kdk does not exist
>     Job sent?
> 
> 
> So the problem to solve is: how do I get the varibles $1 etc. get
> recogized inside a shell function?
> 
> [Probably easy -- but 5 hours of reading in a thick book abut shell programming
> didn't let me find a solution yet. Ascribe it to my newbie-ness in such things,
> please.]
> 
> Thanks,
> Kurt
> 
> 
> > On Tue, May 21, 2002 at 05:55:14PM +0200, Kurt Pfeifle wrote:
> > 
> >>Joel Hammer wrote:
> >>
> >>>Have you tried double quotes instead of single quotes. Single quotes prevent
> >>>expansion of $1 to its value.
> >>>Joel
> >>>
> >>>
> >>Yes, that's why I explicitely named them "double" and "single" quotes, in case
> >>they get not recognized as such by quickly scanning the email....       ;-)
> >>
> >>Kurt
> >>
> >>
> >>>On Tue, May 21, 2002 at 01:35:22PM +0200, Kurt Pfeifle wrote:
> >>>
> >>>
> >>>>Thanks, Joel,
> >>>>
> >>>>for your answer. It is not ftp, it is smbclient (which will be on HP-UX)
> >>>>and the receiving end is a WinNT4 box.
> >>>>
> >>>>Joel Hammer wrote:
> >>>>
> >>>>
> >>>>>Will the ftp box act as an ftp server?
> >>>>>If so, an expect script might be a good way to transfer them.
> >>>>>
> >>>>>
> >>>>>
> >>>>Hmmm, "expect" is even more "new" to me than the shell scripting stuff...
> >>>>I'll start reading the manpage tonight, and google for documentation,
> >>>>tutorials and examples of expect scripts..
> >>>>
> >>>>
> >>>>
> >>>>>This command worked fine for me:
> >>>>>smbclient //HAMMER2/ELLEN -N -c "put junkheader.txt"  
> >>>>>
> >>>>>
> >>>>This works for me too, even in the form of using single quotes (')
> >>>>instead of double ("). But here you *named* the file.
> >>>>
> >>>>*I* need to call it by its reference as a commandline parameter.
> >>>>
> >>>>
> >>>>
> >>>>>where junkheader.txt is a file on the local system. $1 should work. The
> >>>>>original file name is preserved.
> >>>>>
> >>>>>
> >>>>Maybe "preserved". But it is a kind of double nesting: $1 is recognized
> >>>>inside the shell script; but then inside the script there is smbclient
> >>>>called, and the "-c" (for commands to be executed by smbclient) needs
> >>>>quotes and inside these quotes the $1 isn't recognized any more.
> >>>>
> >>>>I don't need to rely on smbclient, I just need a method to process a
> >>>>file "file-orig" through a script (called as "script.sh file.orig"),
> >>>>which generates a second file, "file-orig.extension", and then transfer
> >>>>both to the NT box, preserving their names "file-orig" and
> >>>>"file-orig.extension".
> >>>>
> >>>>[I succeeded to transfer by renaming the files "file.orig" to allways
> >>>>the same name "new-static-name" and transfer the "new-static-name" to
> >>>>the NT-box.... but that is not the purpose...]
> >>>>
> >>>>Thanks again,
> >>>>Kurt
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>Joel
> >>>>>
> >>>>>On Tue, May 21, 2002 at 04:36:39AM +0200, Kurt Pfeifle wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Kurt Pfeifle wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>Hi,
> >>>>>>>
> >>>>>>>being a total newbie in shellscripting and similar stuff, I
> >>>>>>>am suffering from a brain freeze around the following problem:
> >>>>>>>
> >>>>>>>* I need to print (or transfer otherwise) to a WinNT box;
> >>>>>>>* the files are send from inside a shellscript;
> >>>>>>>* the script gets the filename on the commandline when started;
> >>>>>>>* so the only knows it works on "$1";
> >>>>>>>* the problem is, that the original filename needs to be conserved
> >>>>>>>when it arrives on the WinShare...
> >>>>>>>
> >>>>>>>Anyone with a suggestion?
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>What I tried is this:
> >>>>>>--------------------
> >>>>>>
> >>>>>>export FILENAME=testfile.ps
> >>>>>>
> >>>>>>kde-bitshop:/home/kde4 > smbclient //transmeta/ljet5 -N  -c 'put $FILENAME'
> >>>>>>added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
> >>>>>>Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.4]
> >>>>>>$$FILENAME does not exist
> >>>>>>
> >>>>>>kde-bitshop:/home/kde4 > echo $FILENAME
> >>>>>>testfile.ps
> >>>>>>
> >>>>>>kde-bitshop:/home/kde4 > smbclient //transmeta/ljet5 -N  -c "put $FILENAME"
> >>>>>>added interface ip=10.160.16.45 bcast=10.160.31.255 nmask=255.255.240.0
> >>>>>>Domain=[TUX-NET] OS=[Unix] Server=[Samba 2.2.4]
> >>>>>>$FILENAME does not exist
> >>>>>>
> >>>>>>
> >>>>>>-- 
> >>>>>>To unsubscribe from this list go to the following URL and read the
> >>>>>>instructions:  http://lists.samba.org/mailman/listinfo/samba
> >>>>>>
> >>>>>>
> >>>>>>
> >>
> > 
> 
> 




More information about the samba mailing list