home directory


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting home directory
# 1  
Old 04-16-2009
home directory

hello

i want shell script.

as root , i want to untar specific.tar.gz to all home user directory

and after untar , there is 1.txt 2.txt ~~ 26.txt in/public_html/test1/
i want randomly selected 6 text files in 1.txt 2.txt ~26.txt to be renamed
newword1.word , newword2.word , ~~ newword6.word .


and change all file chown user1:user1
user2:user2 .........

and chmod all files 755




/home/user1/public_html/
/home/user2/public_html/
/home/user3/public_html/
/home/user4/public_html

.
.
/home/user99/public_html/
# 2  
Old 04-16-2009
My preferred method of dealing with things like this is to do in 2 or 3 steps,
not all at once.

Here's the first script:

Code:
#!/bin/ksh

#----------------------------------------------------------------------#
# head to home partition.                                              #
#----------------------------------------------------------------------#
cd /home

/bin/ls |
while read dir ; do

#----------------------------------------------------------------------#
# Not a directory, next....                                            #
#----------------------------------------------------------------------#
  if [ ! -d $dir ]; then
    continue
  fi

  cd $dir

#----------------------------------------------------------------------#
# Untar the tar file....                                               #
#----------------------------------------------------------------------#
  cp /fullpath/tar_file.gz .
  gunzip tar_file.gz

  chmod -R *

  cd /home

done | tee /tmp/log1

Once that thing is debugged and working correctly,
I use a code generator to create the next dangerous type commands:
( mv commands in this case.... )

Code:
#!/bin/ksh

#----------------------------------------------------------------------#
# head to home partition.                                              #
#----------------------------------------------------------------------#
cd /home

/bin/ls |
while read dir ; do

  cd /home/$dir/public_html/test1

#----------------------------------------------------------------------#
# Randomly rename 6 files.                                             #
#----------------------------------------------------------------------#
  num=0
  /bin/ls *.txt |
  while read file_nm ; do

    (( check = $RANDOM % 2 ))

    if [ $check -eq 0 ]; then
      continue
    fi

    (( num = num + 1 ))

    echo /bin/mv $PWD/$file_nm $PWD/newword${num}.word

    if [ $num -ge 6 ]; then
      break
    fi
  done ### while doing random renaming....

  cd /home

done |
  tee /tmp/log2

Then, before executing, I examine the contents of /tmp/log2.
If the commands in there look right --- then I execute that script with:

Code:
/bin/ksh -xvf /tmp/log2 2>&1 | tee /tmp/log3

Using this method decreases the risk incurred at each step and
provides a log for each step also.

HTH
# 3  
Old 04-16-2009
Quote:
Originally Posted by quirkasaurus
My preferred method of dealing with things like this is to do in 2 or 3 steps,
not all at once.

Here's the first script:

Code:
#!/bin/ksh

#----------------------------------------------------------------------#
# head to home partition. #
#----------------------------------------------------------------------#
cd /home

/bin/ls |
while read dir ; do

#----------------------------------------------------------------------#
# Not a directory, next.... #
#----------------------------------------------------------------------#
  if [ ! -d $dir ]; then
    continue
  fi


Why are you using ls? And why a full path?

Code:
for dir in */

Quote:
Code:
  cd $dir

#----------------------------------------------------------------------#
# Untar the tar file.... #
#----------------------------------------------------------------------#
  cp /fullpath/tar_file.gz .


Why copy the tarball?
Quote:
Code:
  gunzip tar_file.gz


That only ungzips it; it doesn't untar the files.

Code:
tar xvzf /fullpath/tar_file.gz

Quote:
Code:
  chmod -R *


That command is missing the permissions.
Quote:
Code:
  cd /home

done | tee /tmp/log1

Once that thing is debugged and working correctly,
I use a code generator to create the next dangerous type commands:
( mv commands in this case.... )

Code:
#!/bin/ksh

#----------------------------------------------------------------------#
# head to home partition. #
#----------------------------------------------------------------------#
cd /home

/bin/ls |
while read dir ; do


As above: why ls?
Quote:
Code:
  cd /home/$dir/public_html/test1

#----------------------------------------------------------------------#
# Randomly rename 6 files. #
#----------------------------------------------------------------------#
  num=0
  /bin/ls *.txt |
  while read file_nm ; do


Yet again.

Code:
for file_nm in *.txt

Quote:
Code:
    (( check = $RANDOM % 2 ))


Why not use the standard syntax?

Code:
check=$(( $RANDOM % 2 ))

(Though $RANDOM is not standard)
Quote:
Code:
    if [ $check -eq 0 ]; then
      continue
    fi

    (( num = num + 1 ))

    echo /bin/mv $PWD/$file_nm $PWD/newword${num}.word

    if [ $num -ge 6 ]; then
      break
    fi
  done ### while doing random renaming....

  cd /home

done |
  tee /tmp/log2

Then, before executing, I examine the contents of /tmp/log2.
If the commands in there look right --- then I execute that script with:

Code:
/bin/ksh -xvf /tmp/log2 2>&1 | tee /tmp/log3

Using this method decreases the risk incurred at each step and
provides a log for each step also.

HTH

Last edited by cfajohnson; 04-16-2009 at 09:41 PM..
# 4  
Old 04-17-2009
why not ls? are you worried about performance again?

fullpaths are safest and using them means you're less likely to put something
somewhere unintended.

oops:

Code:
chmod -R 755 *

Preferred would be to unzip the tarball elsewhere, I suppose, then
get fancy with the tar -xvf command and redirection.

I've had other posters complain when I use your syntax that it's not standard.
So. I give up. Let the original poster do some of the work. It won't kill them.
# 5  
Old 04-17-2009
deleted

Last edited by topic32428285; 04-18-2009 at 10:50 AM..
# 6  
Old 04-17-2009
not on my machine...
# 7  
Old 04-17-2009
Quote:
Originally Posted by quirkasaurus
why not ls? are you worried about performance again?

Not only that, but the way you used it could break the script with some filenames.
Quote:
fullpaths are safest and using them means you're less likely to put something somewhere unintended.

There's nothing safer about full paths, but they are less portable.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Solaris

SunOS confusing root directory and user home directory

Hello, I've just started using a Solaris machine with SunOS 5.10. After the machine is turned on, I open a Console window and at the prompt, if I execute a pwd command, it tells me I'm at my home directory (someone configured "myuser" as default user after init). ... (2 Replies)
Discussion started by: egyassun
2 Replies

2. Solaris

Not able to create directory in /home.

I am working on Solaris 10 machine with autofs(auto_home) disabled. But when I am creating any directory inside /home like /home/Telco, it's going in sleep, and nothing is happening until I manually end the process. Can any one help me out here? ---------- Post updated 2014-01-14 at 05:05... (2 Replies)
Discussion started by: nixhead
2 Replies

3. Solaris

home directory for roleadd

hi all.. by seeing the subject, you can judge that i am new bee to solaris. my question in mind is 'Why do we need to specify a home directory for roleadd ?'. specifying a home directory for user is meaningful because user oriented preferences can be placed inside it. RBAC uses attributes in... (1 Reply)
Discussion started by: starworse@yahoo
1 Replies

4. Solaris

Restricting SFTP user to a defined directory and home directory

Hi, I've created solaris user which has both FTP and SFTP Access. Using the "ftpaccess" configuration file options "guest-root" and "restricted-uid", i can restrict the user to a specific directory. But I'm unable to restrict the user when the user is logged in using SFTP. The aim is to... (1 Reply)
Discussion started by: sftpuser
1 Replies

5. SuSE

Could not chdir to home directory

Hi, on logging into oracle account i got these error message Could not chdir to home directory /home/oracle: No such file or directory /usr/X11R6/bin/xauth: error in locking authority file /home/oracle/.Xauthority found the command used in creating user was usermod -d /home/oracle -m... (5 Replies)
Discussion started by: saha
5 Replies

6. Programming

Getting Home Directory

Hi I need to get the home directory of current user who is running the program, also i need to store the value in a particular variable and pass to the function. thanks in advance (4 Replies)
Discussion started by: cutechaps
4 Replies

7. UNIX for Dummies Questions & Answers

home directory

Hi what is the difference between the directory named /home and the user's home directory? can anyone plz reply? really confuse about it!!!!!!!! thank you (1 Reply)
Discussion started by: nokia3100
1 Replies

8. UNIX for Dummies Questions & Answers

cd into home directory ~

I'm trying to cd into a home directory with cd ~username_here and I'm getting the following error: ~username_here: does not exist The directory exists and I can directly go to it via cd /export/home/username_here without any problems. Any suggestions? (4 Replies)
Discussion started by: here2learn
4 Replies

9. UNIX for Dummies Questions & Answers

c++ home directory??

when i compile *.cpp files the compiler didn't find the non standart includes.If i have to put the full path of the includet files where shall i begin from root dirctory or i heve to put includet files in cpp home directory??? can i compile java files in unix(linux mandrake 7) if yes haw... (3 Replies)
Discussion started by: user666
3 Replies
Login or Register to Ask a Question