Check for valid hostnames


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Check for valid hostnames
# 8  
Old 06-03-2016
Hello RudiC,

The following points also needs to be satisfied by the script for a valid hostname naming convention :

1) The hostname cannot start or end with a hyphen.

In the below example output should be bad :

Code:
$ ./hostchk.sh
Enter hostname
deda23-
good

$ ./hostchk.sh
Enter hostname
-dwedr
good


2) Hostnames are composed of series of labels concatenated with dots. Each label must be between 1 and 63 characters long. Hence we cannot have two dots together in the hostname ( ".." ) .Also we cannot have a dot in the beginning ( since each label must be between 1-63 characters).

In the below example output should be bad :

Code:
$ ./hostchk.sh
Enter hostname
deda1x..
good

$ ./hostchk_rudic.sh
Enter hostname
.deda
good


Last edited by rahul2662; 06-03-2016 at 03:41 AM..
# 9  
Old 06-03-2016
Hello rahul2662,

Could you please try following.
Code:
echo "Please enter the name:"
read NAME
ONE=1
VALUE=`echo $NAME | awk '{if($0 !~ /^\./ &&  $0 !~ /\.$/ && $0 !~ /^[[:digit:]]/ && $0 !~ /^-/ && $0 !~ /-$/ && $0 !~ /[[:space:]]/ && $0 !~ /[[:cntrl:]]/){num=split($0, A,".");if(num<=3){for(i=1;i<=num;i++){if(length(A[i])>63){exit};Q=Q?Q+length(A[i]):length(A[i])};if(length(Q)<=189){print 1}}}}'`
 if [[ $VALUE == $ONE ]]
then
        echo "You have entered correct name as " $NAME
else
        echo "Please enter correct name as it is NOT matching the standards."
fi

Following are few tests which I ran for above code too.
Code:
##### Digit starting TEST.
./script.ksh
Please enter the name:
12334ewfwfwffw.defwfwwfw
Please enter correct name as it is NOT matching the standards.
  
##### DOT ending TEST.
./script.ksh
Please enter the name:
dwqfwfweffwfe.
Please enter correct name as it is NOT matching the standards.
  
##### Length of a field is more than 63 TEST.
./script.ksh
Please enter the name:
qdqeewfweffew.fwefwfewf.fweffwfwfwfwfwfwfwfwfwfwfwfwqcwdcwcwvwfwcwdvfdwgfeqseqrwqfw
Please enter correct name as it is NOT matching the standards.
  
##### Ending entry with an hyphen TEST.
./script.ksh
Please enter the name:
fefewfwefd-
Please enter correct name as it is NOT matching the standards.
  
##### starting with hyphen of entry TEST.
./script.ksh
Please enter the name:
-dwqwfwffwwv2131241.sqcwdwdcw
Please enter correct name as it is NOT matching the standards.

EDIT: Adding a non-one liner form of solution too now.
Code:
 echo "Please enter the name:"
read NAME
ONE=1
 VALUE=`echo $NAME | awk '{if($0 !~ /^\./ &&  $0 !~ /\.$/ && $0 !~ /^[[:digit:]]/ && $0 !~ /^-/ && $0 !~ /-$/ && $0 !~ /[[:space:]]/ && $0 !~ /[[:cntrl:]]/){
                          num=split($0, A,".");
                          if(num<=3){
                                        for(i=1;i<=num;i++){
                                                                if(length(A[i])>63){exit}
                                                                Q=Q?Q+length(A[i]):length(A[i])
                                                           };
                                        if(length(Q)<=189) {
                                                                print 1
                                                           }
                                    }
                                                                                                                                           }
                          }'`
 if [[ $VALUE == $ONE ]]
then
        echo "You have entered correct name as " $NAME
else
        echo "Please enter corect name as it is NOT matching the standards."
fi

Also adding a working example too following.
Code:
 ./script.ksh
Please enter the name:
dqdqfdq.213124.wrgfrewge
You have entered correct name as  dqdqfdq.213124.wrgfrewge

Thanks,
R. Singh

Last edited by RavinderSingh13; 06-03-2016 at 05:21 AM.. Reason: Added a non-one liner form of solution now. Added input shouldn't sart from a DOT too now.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check if time format is valid

How can I validate if time (HH:MM:SS) argument is valid? I got this from web but I can't modify it to exit the script if the time argument is invalid. echo $1 | awk -F ':' '{ print ($1 <= 23 && $2 <= 59 && $3 <= 59) ? "good" : "bad" }' ex: ./script.ksh 12:34:21 = okay ./script.ksh... (10 Replies)
Discussion started by: erin00
10 Replies

2. Shell Programming and Scripting

Check if a string is a valid timestamp in UNIX.

Hi all, I have date and time value in a string, I want to check if it is a valid date and time. Need help on this. Thanks (7 Replies)
Discussion started by: Pratiksha Mehra
7 Replies

3. Shell Programming and Scripting

Need a script to check if an argument is valid shell variable

I need a script that should print 'yes' if the argument is a valid shell variable name else 'No' if it is not a valid shell variable. A valid one begins with an alphabet or percentage (%) character and is followed by zero or more alphanumberic or percentage (%) characters. For example: $... (6 Replies)
Discussion started by: pingiliarjun
6 Replies

4. Shell Programming and Scripting

How to check the user input to be valid using shell script?

How to check the user input to be valid using shell script? The valid input is in the format like as follows. 1. It can only have r,w,x or a hyphen and nothing else. 2. ensure the r, w, x are in the correct order. for example: rwxr-xr-x is a valid format. Thanks (5 Replies)
Discussion started by: hyeewang
5 Replies

5. UNIX for Dummies Questions & Answers

How to check if file contains valid strings?

Hi All, I am a newbie...I would like to have a function which ll check if a file contains valid strings before "=" operator. Just to give you my requirement: assume my file has content: hello= gsdgsd sfdsg sgdsg sgdgdg world= gggg hhhh iiiii xxxx= pppp ppppp pppp my... (5 Replies)
Discussion started by: rtagarra
5 Replies

6. Shell Programming and Scripting

how to check for valid password

I need to check if an account has a valid password. Would something like this work? read ACCNAME if grep -q "^$ACCNAME:\$6:" /etc/shadow; thenI noticed every entry in my shadow file that has a password starts with $6 ... it works for my current setup, but would it always work? I can't test... (4 Replies)
Discussion started by: ADay2Long
4 Replies

7. Homework & Coursework Questions

Bash shell - Check if value is valid directory.

1. The problem statement, all variables and given/known data: The script usage will be as follows: library.third source_directory - Your script will display an appropriate error message and exit with status 3 if no parameters are given - Your script will display an appropriate error... (2 Replies)
Discussion started by: netmaster
2 Replies

8. Shell Programming and Scripting

to check whether a directory or filename path is valid or not

the script on excution should take a directory path from useran a numric input and it should check indicate whether its write or not? if the cmmd sh<script-name>,dir/path.<500>" is greater than 500 in size should be copied to dir ,temp in pwd and display the mesage'files of 2000 bytes hav been... (4 Replies)
Discussion started by: arukr
4 Replies

9. Shell Programming and Scripting

Check valid records in really big file with one commend..

Hi, I have a 5 gig file, no record terminators, field terminators are newline. The record length is 768 and I would like to check that every 768th byte is a newline and print out the byte position if it isn't. I would like to do this going either forward or backwards with one command if... (3 Replies)
Discussion started by: vtischuk@yahoo.
3 Replies

10. Shell Programming and Scripting

How to check for a valid numeric input

Hi Folks, I'm using bash script. I would like to check whether input is a number or not.(Only positive numbers).. if space or non numeric is entered, it should say "invalid input". pls help.. thanks in adv. Br/// Vijay. (1 Reply)
Discussion started by: Vijayakumarpc
1 Replies
Login or Register to Ask a Question