05-16-2006
This type of stuff seems to just keep coming back. People want to run scripts remotely. I've tried every way I can think of and this is the best way. You not only get functionality but you get security as well. Every Unix environment needs a way to issue shell scripts, perl script, SQL scripts to remote servers. I have posted the following example already but I will do it again. Everytime I go to a new company the first thing I do is build an issuance process. A way to issue script remotely outside of using some scheduler like Maestro or Control -m.
This is really a multi step process. You need to setup SSH correctly and create a key pair and passphrase. Then you need to load your keys into the SSH agent so that you don't get prompted for a passphrase. The SSH agent will handle passing your passphrase to the other systems.
Example:
#ssh-add
Adding identity: /home/tester/.ssh2/id_dsa_1024_defender.pub
Need passphrase for /home/tester/.ssh2/id_dsa_1024_defender.pub
(1024-bit dsa, tester@defender, Sun Apr 30 2000 21:39:13).
Enter passphrase:
#ssh server date
Wed May 10 14:06:57 EDT 2006
#
#Now that you have SSH setup. You can take any script and scp the script to the remote server.
Sample script below
###############################################
#!/bin/sh
LOG="/tmp/MYTEST.log
##################
function if_error
##################
{
if [[ $? -ne 0 ]]; then # check return code passed to function
print "$1 TIME:$TIME" | tee -a $LOG # if rc > 0 then print error msg and quit
exit $?
fi
}
chown root:root /etc/passwd
if_error "Failed chowning /etc/passwd to root:root"
chmod 700 /etc/passwd
if_error "Failed chmoding /etc/passwd to 700"
rm -rf /etc/somedir
if_error "Failed deleting /etc/somedir"
################################################
#Okay..So SSH is working and you got a little test script with the proper error checking in it. Also, I used the tee command to redirect the output of the script to the screen and to a log file in tmp.
scp $USER@$HOST:$PATH/$SCRIPT $USER@$HOST:/tmp/$SCRIPT
ssh -l $USER $HOST chmod 700 /tmp/$SCRIPT
ssh -l $USER $HOST /tmp/$SCRIPT
ssh -l $USER HOST rm /tmp/$SCRIPT
1. Copied script to server
2. Changed permissions
3. Executed script that will write to log file and screen cause I wrote it like that.
4. rm the script
Hope this is helpful.
-X
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I've a script that fetches various values from the database as below:
#! /bin/ksh
$conn="user/pwd@service_name"
`sqlplus -s << $conn EOF1
@xyz.sql
@pqr.sql
@abc.sql
EOF1`
The output of the script should generate txt files containing the results from queries which are further... (6 Replies)
Discussion started by: manthasirisha
6 Replies
2. UNIX for Dummies Questions & Answers
Hi there folks,
I am trying to execute remote sql queries on an Oracle server.
I would like to save the result of the executed sql queries on a text file, and send that text file as an attachment to an email address.
Could anyone give me an idea on how the above could be achieved? Any help... (2 Replies)
Discussion started by: Javed
2 Replies
3. UNIX for Dummies Questions & Answers
Dear All
I have file a.sql, let's say the content is:
_________________________________
select * from dual;
exit;
_________________________________
and I have shell script a.sh, the content is:
_________________________________
ORACLE_SID=testing; export ORACLE_SID... (0 Replies)
Discussion started by: Aditya Purwanto
0 Replies
4. Shell Programming and Scripting
Hi-
I am trying to achieve the following in a script so I can schedule it on a cron job. I am fairly new to the unix environment...
I have written a shell script that reads a flat file and loads the data into an Oracle table (Table1) via SQLLDR. This Works fine. Then, I run a nested insert... (5 Replies)
Discussion started by: rajagavini
5 Replies
5. Shell Programming and Scripting
Hello members,
I'm working on the Solaris environment and the DB i'm using is Oracle 10g.
Skeleton of what I'm attempting;
Write a ksh script to perform the following. I have no idea how to include my sql query within a shell script and loop through the statements. Have therefore given a... (4 Replies)
Discussion started by: novice82
4 Replies
6. Shell Programming and Scripting
Hi, can anyone help me with this script please. I need the oracle command to go into the unix batch file.
#!/bin/sh
# A menu driven Shell script which has following options
# for acmtoron@>
#
#
# Exit
# As per option do the job
#----
while :
do
clear
echo " A C M LOG MONITORING... (0 Replies)
Discussion started by: tinaaguilera
0 Replies
7. Shell Programming and Scripting
Hi,
I have an shell script program in a remote linux machine which will do some specific monitoring functionality. Also, have some C executables in that machine.
From a windows machine, I want to run the shell script program (If possible using java).
I tried with SSH for this. but, in... (1 Reply)
Discussion started by: ram.sj
1 Replies
8. UNIX for Dummies Questions & Answers
Hi All,
In a Shell scriipt with a SQL block I want to issue a query against a local DB and a remote DB on a remote server. The shell script is running locally.
This is how I connect to the local server. But I want the query to reference remote table in the join. Question can I specify a... (1 Reply)
Discussion started by: daveu7
1 Replies
9. OS X (Apple)
I'm in a situation where I am executing a shell script(Bash) on another machine remotely using ssh, and for various reasons sometimes need to quit it and restart it. The shell script being run does many different things, so its hard to know what process to kill on the remote machine, and even if I... (2 Replies)
Discussion started by: TheDrizzle
2 Replies
10. Shell Programming and Scripting
Hi
Wishing to all.
I am very new joined in an organization as a unix system administrator.
I need a help in preparing a script for a report.
i have a file contains all of the linux/ubuntu servers line by line around 140 servers.
vi servers.txt
nh01
nh02
nh03
bh01
bh04
-
-
:wq (3 Replies)
Discussion started by: kumaraswamy
3 Replies
rsh(1) General Commands Manual rsh(1)
NAME
rsh - Executes the specified command at the remote host or logs into a remote host
SYNOPSIS
rsh [-dn] [-l user] remote_host [command] [argument...]
The remote shell command (rsh) executes command at the remote_host, or, if no command is specified, logs into remote_host.
OPTIONS
Turns on socket debugging (using setsockopt()) on the TCP sockets used for communication with the remote host. Specifies that rsh is to
log into the remote host as user instead of the local username. If this option is not specified, the local and remote usernames are the
same. Specifies that rsh is to ignore input from STDIN. Use this option if you put rsh in the background without redirecting its input
away from the terminal. If you do not use this option in this situation, rsh blocks even if no reads are posted by the remote command.
DESCRIPTION
The rsh command sends standard input from the local host to the remote command and receives standard output and standard error from the
remote command. If you do not specify a command, rsh executes rlogin instead.
If you do not specify the -l option, the local username is used at the remote host. If -l user is entered, the specified username is used
at the remote host. In either case, the remote host allows access only if at least one of the following conditions is satisfied: The local
user ID is not superuser, and the name of the local host is listed as an equivalent host in the remote /etc/hosts.equiv file. If either
the local user ID is superuser or the check of /etc/hosts.equiv fails, the remote user's home directory must contain a $HOME/.rhosts file
that lists the local host and username.
For security reasons, any $HOME/.rhosts file must be owned by either the remote user or the root user, and should have permissions set to
600 (read and write by owner only).
In addition to the preceding conditions, rsh also allows access to the remote host if the remote user account does not have a password
defined. However, for security reasons, use of a password on all user accounts is recommended.
While the remote command is executing, pressing the Interrupt, Terminate, or Quit key sequences sends the corresponding signal to the
remote process. However, pressing the Stop key sequence stops only the local process. Normally, when the remote command terminates, the
local rsh process terminates.
To have shell metacharacters interpreted on the remote host, place the metacharacters inside (double quotes). Otherwise, the metacharac-
ters are interpreted by the local shell.
RESTRICTIONS
The rsh command is confused by output generated by commands in a file on the remote host. In particular, the messages, where are you? and
stty: Can't assign requested address can result if output is generated by the startup file.
EXAMPLES
In the following examples, the local host host1 is listed in the /etc/hosts.equiv file at the remote host host2. To check the amount of
free disk space on the remote host host2, enter: $ rsh host2 df To append a remote file to another file on the remote host, place the >>
metacharacters in (double quotes): $ rsh host2 cat test1 ">>" test2 To append a remote file at the remote host to a local file, omit the
double quotes: $ rsh host2 cat test2 >> test3 To append a remote file to a local file and use a remote user's permissions at the remote
host, use the -l option: $ rsh host2 -l jane cat test4 >> test5
FILES
Specifies remote hosts from which users can execute commands on the local host (provided these users have an account on the local host).
Specifies remote users that can use a local user account.
SEE ALSO
Commands: rcp(1), rlogin(1), rshd(8), telnet(1)
Functions: rexec(3)
Files: rhosts(4)
rsh(1)