1#!/usr/bin/env python 2###################################################################### 3## 4## Simple add/delete/change share command script for Samba 5## 6## Copyright (C) Gerald Carter 2004. 7## 8## This program is free software; you can redistribute it and/or modify 9## it under the terms of the GNU General Public License as published by 10## the Free Software Foundation; either version 2 of the License, or 11## (at your option) any later version. 12## 13## This program is distributed in the hope that it will be useful, 14## but WITHOUT ANY WARRANTY; without even the implied warranty of 15## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16## GNU General Public License for more details. 17## 18## You should have received a copy of the GNU General Public License 19## along with this program; if not, write to the Free Software 20## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21## 22###################################################################### 23 24import sys, os 25from SambaConfig import SambaConf 26 27 28## ## 29## check the command line args ## 30## ## 31delete_mode = False 32if len(sys.argv) == 3: 33 delete_mode = True 34 print "Deleting share..." 35elif len(sys.argv) == 5: 36 print "Adding/Updating share..." 37else: 38 print "Usage: %s configfile share [path] [comments]" % sys.argv[0] 39 sys.exit(1) 40 41 42## ## 43## read and parse the config file ## 44## ## 45 46confFile = SambaConf() 47 48confFile.ReadConfig( sys.argv[1] ) 49if not confFile.valid: 50 exit( 1 ) 51 52if delete_mode: 53 if not confFile.isService( sys.argv[2] ): 54 sys.stderr.write( "Asked to delete non-existent service! [%s]\n" % sys.argv[2] ) 55 sys.exit( 1 ) 56 57 confFile.DelService( sys.argv[2] ) 58else: 59 ## make the path if it doesn't exist. Bail out if that fails 60 if ( not os.path.isdir(sys.argv[3]) ): 61 try: 62 os.makedirs( sys.argv[3] ) 63 os.chmod( sys.argv[3], 0777 ) 64 except os.error: 65 sys.exit( 1 ) 66 67 ## only add a new service -- if it already exists, then 68 ## just set the options 69 if not confFile.isService( sys.argv[2] ): 70 confFile.AddService( sys.argv[2], ['##', '## Added by modify_samba_config.py', '##'] ) 71 confFile.SetServiceOption( sys.argv[2], "path", sys.argv[3] ) 72 confFile.SetServiceOption( sys.argv[2], "comment", sys.argv[4] ) 73 confFile.SetServiceOption( sys.argv[2], "read only", "no" ) 74 75ret = confFile.Flush() 76 77sys.exit( ret ) 78 79