LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   Autocreate DATE folder (https://www.linuxquestions.org/questions/linux-newbie-8/autocreate-date-folder-782777/)

stascrash 01-17-2010 11:25 AM

Autocreate DATE folder
 
Hey guys,
i am running into few problems with the script here.
I have an FTP server, all configured, and i need to have a script that will create a folder with current dated within a tree as soon as particular user logs in. I was wondering if that is possible with proftpd.
if not, can someone suggest how to create a script that will simply create a DIR with date and autorun itself every 24 hours?
i am running Debian/Proftpd with Mysql authorization.
Thanks
-stas

stascrash 01-17-2010 11:52 AM

hey guys,
after a little research i got this

Quote:

mkdir `date +%m%d%Y`
It works and creates like i need it.
Now, i have the following tree of folders

Quote:

ftp/user/userA/DATE folder
ftp/user/userB/Date folder
etc.
Is there a way to tell my script to run and make folders, replacing userA, going next to userB etc, until the end of my folder structure?
i tried mkdir ftp/user/*/`date +%m%d%Y` - using * to mark ALL, but it did not work, any ideas? thanks

Disillusionist 01-17-2010 11:59 AM

You could loop through the directories:

Code:

##
##Untested
##

l_date=$(date +%m%d%Y)
for l_dir in $(ls ftp/user/)
do
  mkdir ftp/user/${l_dir}/${l_date}
done


stascrash 01-17-2010 01:22 PM

@Disillusionist: Thanks you, let me give this a try, i hope it will work for what i need. Do u know if i can execute a script when FTP client connects ?

chrism01 01-17-2010 05:05 PM

I don't know if you can do that from FTP, but you could definitely run that loop from cron at eg 00:01 in the morning.
http://www.adminschoice.com/docs/cro...Crontab%20file

After all, you don't want it to create the folders each time a user logs in, just the first time in a given day...

stascrash 01-18-2010 06:52 PM

Thanks Guys,
after working a little more, i added few more variables to it to do and it is all ready to go.
I have another question, honestly, this is my first or second script for Linux, and after exploring some tutorials, to made it executable, but for some reason it needs me to still put SH in front,
could you suggest how to get around this?
Thanks,

Disillusionist 01-19-2010 01:54 AM

Tell the script what interpreter it should be using.

If using bash, the first line of the script should be:
Code:

#!/bin/bash
If using sh, the first line of the script should be:
Code:

#!/bin/sh
If using Perl, the first line of the script should be:
Code:

#!/usr/bin/perl
To check where sh is coming from type the following at the command line:
Code:

which sh

stascrash 01-19-2010 08:32 AM

Yeah, i got all that taken care of, even run the chmod to make it executable, but when i type. script.sh it does not run saying
-bash: script.sh: command not found.
but when i add SH in front it runs no problem, i am going to schedule this for CRON to run, but don't think this will work if i don't get it to run without the use of SH command in front.
Weird, i know that the command to run it is simple, and straight forward, but running it did not help, i was using bash scripting tutors, and nothing really worked.
Thanks for getting back to me

Disillusionist 01-19-2010 10:03 AM

What happens if you type:
Code:

./script.sh
"Obviously" this needs to be run from the directory containing script.sh

Messages of "script.sh" not found normally means that the directory containing script.sh is not in the $PATH environment variable.

What happens if you type:
Code:

which script.sh

chrism01 01-19-2010 05:21 PM

When you put it in cron, supply the full/absolute path to the script. cron env is minimal and won't include eg you home dir. Same rule applies to any other scripts/files referenced, unless the script takes care of that.

2 10 * * * /path/to/script.sh

stascrash 01-20-2010 03:24 PM

@Disillusionist:
When i run ./script.sh
i get the following: PERMISSION DENIED
when i run WHICH - i get nothing, no return.
i guess the first PERMISSION DENIED means i have no root rights to run it? am i correct?
however i ran CHMOD u+x on my script, and it shows with a "*" in MC.

chrism01 01-20-2010 05:15 PM

Open a terminal and run

ls -l script.sh

Disillusionist 01-21-2010 12:42 AM

Quote:

Originally Posted by stascrash (Post 3834042)
@Disillusionist:
When i run ./script.sh
i get the following: PERMISSION DENIED

You don't have read/execute permissions for this script.

Typically, if I need a script to be run by anybody, I set permissions to 755 (-rwxr-xr-x) read/write/execute for owner read/execute for group read/execute for all.

Code:

chmod 755 script.sh
Quote:

Originally Posted by stascrash (Post 3834042)
when i run WHICH - i get nothing, no return.

This means that script.sh is not in your $PATH environment variable.

This is fine, but it means that you either need to refer to the full path of the script:
/path/to/script.sh

or when running from the directory that holds the script precede with ./
./script.sh

stascrash 01-22-2010 09:20 AM

alright,Disillusionist, well i have changed the permissions to 755. and it runs with a full path and with ./ from the folder. works and does what it suppose to do. I have setup a CRON for it, like chrism01 suggested with the full path, and waiting for it to execute,
Thank you guys for your help, i will post the results there once it runs.

stascrash 01-23-2010 07:05 PM

Hello Guys,
Thank you very much for helping me out with this problem,
i got my scripts to work and run at specific time. I had some issues mounting the NAS unit with FSTAB, so i created a script to mount and run it at boot time.
Thanks again,
cheers!!


All times are GMT -5. The time now is 04:42 PM.