Visit Our UNIX and Linux User Community


Create directories in stagging and informatica server


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Create directories in stagging and informatica server
# 1  
Old 03-05-2012
Java Create directories in stagging and informatica server

I have a function in bash script to create dir and subdir
Code:
function mkdir_stage ( )
		{
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/ 
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
		}		
	function mkdir_informatica ( )
		{	
			mkdir -p /$Env/ecif/etl/$projectname
			mkdir -p /$Env/ecif/etl/$projectname/logfiles
			mkdir -p /$Env/ecif/etl/$projectname/dropbox
			mkdir -p /$Env/ecif/etl/$projectname/sourcefiles
			mkdir -p /$Env/ecif/etl/$projectname/scriptfiles
			mkdir -p /$Env/ecif/etl/$projectname/parameterfiles
			mkdir -p /$Env/ecif/etl/$projectname/archivefiles
			mkdir -p /$Env/ecif/etl/$projectname/targetfiles
			mkdir -p /$Env/ecif/etl/$projectname/maestro
			mkdir -p /$Env/ecif/etl/$projectname/sqlfiles
			mkdir -p /$Env/ecif/etl/$projectname/rejectfiles
			mkdir -p /$Env/ecif/etl/$projectname/lookupfiles
			mkdir -p /$Env/ecif/etl/$projectname/stagefiles
		       chmod -R 775 /$Env/ecif/etl/$projectname/
		       chmod -R 777 /$Env/ecif/etl/$projectname/dropbox
		}

But i want to reduce this further , Can someone please advice me .Thanks

Last edited by Franklin52; 03-06-2012 at 03:04 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Old 03-05-2012
How about something like this?

Code:
mkproj_dirs() {
  mkdir -p "$1"
  cd "$1"  &&
  mkdir archivefiles dropbox logfiles lookupfiles maestro parameterfiles rejectfiles scriptfiles  sqlfiles stagefiles targetfiles &&
  chmod 775 . &&
  chmod 777 dropbox
}

mkproj_dirs "/webdata/ecif/etl/$Env/$projectname/"
mkproj_dirs "/$Env/ecif/etl/$projectname"

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 03-05-2012
I am testing this functions in my script and get back to you ,Thanks for reply

---------- Post updated at 04:21 PM ---------- Previous update was at 04:14 PM ----------

This is my complete script ::

Code:
#!/bin/bash 
	echo " Script for creating new project in informatica"
	echo "  ***********************************************************"
	echo " First creating stagging area for new project"
	echo "  ************************************************************"
	echo "Enter the project name:"
	read proj_name
	export projectname=$proj_name
	echo "**************************************************************"
	echo " Select the Enviornment"
	echo "Choose Environment: (1-5)"
	echo "  1  -DEV/DEVL"
	echo "  2  -TEST/ALPHA"
	echo "  3  -PREPROD/BETA"
	echo "  4  -PT/SUPP"
	echo "  5  -PROD/VOL"
	echo "  *************************************************************"
	echo ""
	read Env
	export Env=$Env
	echo "***************************************************************"
	echo "Create directories in stagging and informatica server"
	echo "  *************************************************************"
	case $Env in
        1) 	export Env=devl
			export User=ecifetld
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/logfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/dropbox"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sourcefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/scriptfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/parameterfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/archivefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/targetfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/maestro" 
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sqlfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/rejectfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/lookupfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/stagefiles"
			ssh $User@boom.nwie.net "chmod -R 775 /$Env/ecif/etl/$projectname/"
			ssh $User@boom.nwie.net "chmod -R 777 /$Env/ecif/etl/$projectname/dropbox"
		;;
		2)	export Env=alpha
			export User=ecifetla
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/logfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/dropbox"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sourcefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/scriptfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/parameterfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/archivefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/targetfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/maestro" 
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sqlfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/rejectfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/lookupfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/stagefiles"
			ssh $User@boom.nwie.net "chmod -R 775 /$Env/ecif/etl/$projectname/"
			ssh $User@boom.nwie.net "chmod -R 777 /$Env/ecif/etl/$projectname/dropbox"
		;;
		3) 	export Env=beta
			export User=ecifetlb
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			ls -ltr  /webdata/ecif/etl/$Env/$projectname/
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/logfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/dropbox"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sourcefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/scriptfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/parameterfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/archivefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/targetfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/maestro" 
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sqlfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/rejectfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/lookupfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/stagefiles"
			ssh $User@boom.nwie.net "chmod -R 775 /$Env/ecif/etl/$projectname/"
			ssh $User@boom.nwie.net "chmod -R 777 /$Env/ecif/etl/$projectname/dropbox"	
			ssh $User@boom.nwie.net "ls -ltr  /$Env/ecif/etl/$projectname/dropbox"
		;;
		4) 	export Env=supp
			export User=ecifetls
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/logfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/dropbox"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sourcefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/scriptfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/parameterfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/archivefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/targetfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/maestro" 
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sqlfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/rejectfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/lookupfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/stagefiles"
			ssh $User@boom.nwie.net "chmod -R 775 /$Env/ecif/etl/$projectname/"
			ssh $User@boom.nwie.net "chmod -R 777 /$Env/ecif/etl/$projectname/dropbox"	
		;;
		5) 	export Env=vol
			export User=ecifetlp
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/archivefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/dropbox
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/logfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/lookupfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/maestro
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/parameterfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/rejectfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/scriptfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/sqlfiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/stagefiles
			mkdir -p  /webdata/ecif/etl/$Env/$projectname/targetfiles
			chmod -R 777 /webdata/ecif/etl/$Env/$projectname/
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/logfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/dropbox"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sourcefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/scriptfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/parameterfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/archivefiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/targetfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/maestro" 
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/sqlfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/rejectfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/lookupfiles"
			ssh $User@boom.nwie.net "mkdir -p /$Env/ecif/etl/$projectname/stagefiles"
			ssh $User@boom.nwie.net "chmod -R 775 /$Env/ecif/etl/$projectname/"
			ssh $User@boom.nwie.net "chmod -R 777 /$Env/ecif/etl/$projectname/dropbox"	
		;;
	esac	
	echo " This complete creation of New Informatica directories kindy request permission change thru ITTL for Infromatica unix directories as below "
	echo " devl = eiccdevl:ecifetld "
	echo " alpha = eicctest:ecifetla "
	echo " beta	= eiccpprd:ecifetlb"
	echo " supp = eicctest:ecifetls"
	echo " vol = eiccpprd:ecifetlp"
	echo "**************************************************************************************"


Last edited by pludi; 03-06-2012 at 05:03 AM..
# 4  
Old 03-05-2012
Yeah... calling ssh 300 times, to do 300 mkdir calls is a bit of a waste.

Instead of hardcoding all the paths in the script, I'd make a tarball. That will preserve permissions and let you bundle everything in one call.
I'd run this script once:

Code:
mkdir /tmp/skel
pushd /tmp/skel
mkdir -p archivefiles dropbox logfiles lookupfiles maestro parameterfiles rejectfiles scriptfiles sqlfiles stagefiles targetfiles
chmod -R 775 /tmp/skel
tar -cf ~/skel-775.tar -C /tmp/skel .
chmod -R 777 /tmp/skel
tar -cf ~/skel-777.tar -C /tmp/skel .
popd
rm -Rf /tmp/skel

Then, whenever you want to make that whole slew of directories:

Code:
mkdir -p /path/to/$Env/$Projectname/
tar -C /path/to/$Env/$Projectname/ -xf ~/skel-775.tar

It even works over ssh, and should be tons faster:

Code:
ssh username@host mkdir -p /path/to/$Env/$Projectname ';' tar -C /path/to/$Env/$Projectname -xf - < ~/skel-775.tar

I question the need for 777 permissions at all, really. That's a silly idea in general, giving the entire universe write-access to your directories.

Last edited by Corona688; 03-05-2012 at 05:37 PM..
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 03-06-2012
Permission 777 is mandatory from app prespective as dropbox is the place any app can put there data. Thanks for the script
# 6  
Old 03-06-2012
Then 777 the dropbox, not the entire folder. The whole universe doesn't need write-access to everything just to write to the dropbox.

Better yet, find out what application's doing the dropping and give it permissions without giving the whole universe permissions.
# 7  
Old 03-06-2012
after testing mkprojs_dirs function it works fine in local but throughs an error for ssh .

Code:
Create directories in stagging and informatica server
  *************************************************************
Password:
ksh: mkproj_dirs:  not found

Remote sever is solaris ... Any suggestions

Last edited by Scott; 03-07-2012 at 11:20 AM.. Reason: Code tags

Previous Thread | Next Thread
Test Your Knowledge in Computers #699
Difficulty: Medium
The noosphere represents the highest stage of biospheric development, its defining factor being the development of humankind's rational activities, according to biogeochemist Vladimir Vernadsky.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need to create automated Directories

Hi, On serverB i wish to have a script that creates ONLY & EXACTLY the same folder structure that i provide on ServerA. Thus if serverA has a folder "Output" under /opt/app/Output and has the below folders under Output Output Output/logs Output/reciever Output/data... (11 Replies)
Discussion started by: mohtashims
11 Replies

2. UNIX for Dummies Questions & Answers

Create 2 directories in one command

Hi how can i create 2 directories in two different directories ($HOME and $PWD) with 1 command? dir 1 in $HOME and dir2 in $PWD (2 Replies)
Discussion started by: chinababy
2 Replies

3. Shell Programming and Scripting

Create duplicate directories with same permissions

Hi all, I need to create duplicate directories and sub directories (only the directories not the files or file contents) with the same permissions. Can some one guide me in doing this. I could able to create but here the permissions should be the same how can i do this in linux. Thanks in... (5 Replies)
Discussion started by: Olivia
5 Replies

4. Shell Programming and Scripting

UNIX script to check file and start the informatica server

Hi Rockers, I hope u r dng good one. I have a one question is in unix with informatica . I need a unix script to check whether particular file exists in the folder , If it means we have a informatica server , so we can start the informatica server by accessing that file. Every week we have... (0 Replies)
Discussion started by: gurukrishnan
0 Replies

5. Shell Programming and Scripting

check if multiple directories exist else create missing directories

Hi , I 'm trying to check if multiple directories exist on a server, if not create the missing ones and print " creating missing directory. how to write this in a simple script, I have made my code complex if ; then taskStatus="Schema extract directory exists, checking if SQL,Count and... (7 Replies)
Discussion started by: ramky79
7 Replies

6. UNIX for Dummies Questions & Answers

Want to create 3 different new directories under the same path

Hi, Iam new to UNIX...My requirement is to create 3 dir as an hierarchy under /var/opt/temip.The output should be /var/opt/temip/GP_Int/GPTTS/AUTO. I have tried the following script...But only GP_int folder is getting created and not other folders...Can someone help??? #!/usr/bin/ksh #script... (1 Reply)
Discussion started by: Llb
1 Replies

7. UNIX for Dummies Questions & Answers

How to create shotcuts to the directories

Hi, I need your help in writing shortcuts to my directories. So that I can go into the directories with the help of shortcuts. For example: there is a directory called /home/java/webapps/project1 I want to give a shortcut as project1 . So whenever I have give cd project 1 from command line ... (3 Replies)
Discussion started by: TonySolarisAdmi
3 Replies

8. UNIX for Dummies Questions & Answers

copying directories from NT server to Unix server (solaris 5.8)

I need to copy around 30 directories (each directory include one or more text file(s)) from NT server to Unix server at one go. For doing this what are the privillages i should have in both NT and Unix server. Please let me know which command i can use in shell prompt. TIA. (4 Replies)
Discussion started by: jhmr7
4 Replies

9. Programming

Using a C program to create directories in UNIX

Aloha, I'm attempting to use a C program to create directories and then use a system call to have another program write .dat files into that directory. I understand that I could use the "system("mkdir directory_name")" function however, I would like my program to create a new directory each time... (3 Replies)
Discussion started by: aloha_boi
3 Replies

10. UNIX for Dummies Questions & Answers

How to create directories

Hi... Can any1 help me by telling me the way to create multiple directories using single command.... to create 1 directory.. mkdir is used.... :D but how to create multiple direcs. like 4 direc. i tried .... $ mkdir a; mkdir b; mkdir c; mkdir d But its 4 commands in a single... (3 Replies)
Discussion started by: abishekmag
3 Replies

Featured Tech Videos