1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

added command line options to smbsh

(This used to be commit 9b249c075e)
This commit is contained in:
Andrew Tridgell 1998-10-19 02:49:48 +00:00
parent 9debf0b1ee
commit 33790c4150
4 changed files with 71 additions and 29 deletions

View File

@ -25,42 +25,40 @@ To use it you need to do this:
You will be asked for a username and password. After that you will be
returned to a shell prompt. It is actually a subshell running with
smbwrapper enabled. You can confirm this by checking if the SMBW_USER
environment variable is defined.
smbwrapper enabled.
Now try to access /smb/SERVER for some SMB server name and see what
happens. If you set SMBW_WORKGROUP to your workgroup or have workgroup
set in yoru smb.conf then listing /smb/ should list all SMB servers in
your workgroup.
happens. If you use the -W option to set your workgroup or have
workgroup set in your smb.conf then listing /smb/ should list all SMB
servers in your workgroup.
ENVIRONMENT VARIABLES
---------------------
OPTIONS
-------
SMBW_USER
This is usually set by smbsh but you can set it manually. It
specifies the username you will connect to servers with.
-U username
specify the username and optional password (as user%password)
SMBW_PASSWORD
This is usually set by smbsh but you can set it manually. It
specifies the password used to connect to smb servers.
SMBW_DEBUG
-d debug level
This is an integer that controls the internal debug level of smbw. It
defaults to 0, which means no debug info.
SMBW_LOGFILE
-l logfile
The place where smbw debug logs are put. If this is not set then
stderr is used.
SMBW_PREFIX
-P prefix
The root of the SMB filesystem. This defaults to /smb/ but you can
set it to any name you like.
SMBW_WORKGROUP
-W workgroup
This is the workgroup used for browsing (ie. listing machines in the
/smb/ directory). It defaults to the one set in smb.conf.
-R resolve order
This allows you to override the setting of the name resolve order
from smb.conf
ATTRIBUTE MAPPING
-----------------
@ -92,3 +90,5 @@ things that I know don't work:
If you want to help with the development of this code then join the
samba-technical mailing list.

View File

@ -35,13 +35,14 @@ void smbw_setup_shared(void)
int fd;
pstring s, name;
slprintf(s,sizeof(s)-1, "%s/msg.XXXXXX",tmpdir());
slprintf(s,sizeof(s)-1, "%s/smbw.XXXXXX",tmpdir());
fstrcpy(name,(char *)mktemp(s));
/* note zero permissions! don't change this */
fd = open(name,O_RDWR|O_CREAT|O_TRUNC|O_EXCL,0);
if (fd == -1) goto failed;
unlink(name);
shared_fd = set_maxfiles(SMBW_MAX_OPEN);

View File

@ -21,26 +21,61 @@
#include "includes.h"
static void smbsh_usage(void)
{
printf("smbsh [options]\n\n");
printf(" -W workgroup\n");
printf(" -U username\n");
printf(" -P prefix\n");
printf(" -R resolve order\n");
printf(" -d debug level\n");
printf(" -l logfile\n");
exit(0);
}
int main(int argc, char *argv[])
{
char *p, *u;
char *libd = BINDIR;
pstring line;
extern FILE *dbf;
int opt;
extern char *optarg;
extern int optind;
smbw_setup_shared();
p = getenv("SMBW_DEBUG");
if (p) smbw_setshared("DEBUG", p);
while ((opt = getopt(argc, argv, "W:U:R:d:P:l:h")) != EOF) {
switch (opt) {
case 'W':
smbw_setshared("WORKGROUP", optarg);
break;
case 'l':
smbw_setshared("LOGFILE", optarg);
break;
case 'P':
smbw_setshared("PREFIX", optarg);
break;
case 'd':
smbw_setshared("DEBUG", optarg);
break;
case 'U':
p = strchr(optarg,'%');
if (p) {
*p=0;
smbw_setshared("PASSWORD",p+1);
}
smbw_setshared("USER", optarg);
break;
case 'R':
smbw_setshared("RESOLVE_ORDER",optarg);
break;
p = getenv("SMBW_WORKGROUP");
if (p) smbw_setshared("WORKGROUP", p);
p = getenv("SMBW_USER");
if (p) smbw_setshared("USER", p);
p = getenv("SMBW_PASSWORD");
if (p) smbw_setshared("PASSWORD", p);
case 'h':
default:
smbsh_usage();
}
}
charset_initialise();

View File

@ -85,6 +85,10 @@ void smbw_init(void)
DEBUGLEVEL = atoi(p);
}
if ((p=smbw_getshared("RESOLVE_ORDER"))) {
lp_set_name_resolve_order(p);
}
if ((p=smbw_getshared("PREFIX"))) {
slprintf(smbw_prefix,sizeof(fstring)-1, "/%s/", p);
string_sub(smbw_prefix,"//", "/");
@ -102,6 +106,8 @@ void smbw_init(void)
set_maxfiles(SMBW_MAX_OPEN);
BlockSignals(True,SIGPIPE);
errno = eno;
}