The script however works fine on sunSSH
It does not work on an OPEN SSH, I tries to tweak in a little more with the regular expressions... but it still does not help.
Any idea how to overcome this problem.
when I execute the same script on OPEN SSH box here is the error I get.
If I logon interactively from the OPEN SSH box and execute the commands one by one, they work. when they are placed in a script the script doesnot work.any help is appreciated.
INFO: SSH list: user@host outgoing x001_ameint_*.zip
ERROR: #^M
ERROR: #==============================================^M
ERROR: #Bowne Marketing & Business Communications^M
ERROR: #SFTP Server (PCN)^M
ERROR: #==============================================^M
ERROR: #^M
ERROR: ^M
ERROR: sftp> sftp> drwx------ 0 0 0 0 May 21 15:25 .
ERROR: drwx------ 0 0 0 0 Mar 17 11:58 ..
ERROR: drwx------ 0 0 0 0 May 21 15:59 archive
ERROR: -rw------- 0 0 0 4152 May 9 11:44 x001_REPORTS_ameint_AIGODN00857.zip
ERROR: -rw------- 0 0 0 42138973 May 19 14:16 x001_ameint_BP010F0010_00002_003.zip.done
ERROR: -rw------- 0 0 0 377449320 Apr 14 14:20 x001_ameint_BP010F0010_00264_001.zip.done
ERROR: -rw------- 0 0 0 637950 May 21 13:40 x001_ameint_abc.zip
ERROR: -rw------- 0 0 0 408 May 21 13:49 x001_ameint_def.zip
ERROR: -rw------- 0 0 0 408 May 21 13:53 x001_ameint_xyz.zip
ERROR: sftp> Invalid command.^M
ERROR: sftp>
here are my tweaked regular expressions:
ssh_list() {
typeset userAtHost="$1"
typeset dir="${2-.}"
typeset wild="${3-*}"
info "SSH list: $userAtHost $dir $wild"
\# Save, disable, and restore the verbose flag - any
\# verbose output would look like errors.
typeset verbose="$\(set -o |sed -n 's/^verbose *//p'\)"
set \+v
typeset msgs="$\(sftp $userAtHost 2>&1 <<EOF
cd $dir
ls -l
EOF\)"
echo $msgs > TEXT.dat
if [ "$verbose" = on ] ;then
set -v
fi
\# Strip the "Connecting to host..." line, prompts, blank lines
\# and login banners. What's left should only be error messages.
typeset errs="$\(echo "$msgs" |
sed -e '/^Connecting to .*\\.\\.\\.$/d' \\
# -e '/^ERROR: unable to initialize mechanism library [/usr/lib/gss/gl/mech_krb5.so]/d' \
-e '/ERROR: //g' \
-e 's/^$//g' \
-e 's/sftp> //g' \
-e '/^[ ]*$/d' \
-e '/^#/d' \
-e '/^[-dDlbcps][-rwxsStTlL]\{9\}+\{0,1\} /d')"
if [ "$errs" != "" ] ;then
error "$errs"
return 1
fi
echo "$msgs" |
while read line
do
case "$line" in -*\\ $wild\)
echo $\{line\#\#* \}
;;esac
done
return 0
}
ssh_sendrecv() {
typeset op="$1"
typeset userAtHost="$2"
typeset src="$3"
typeset dst="$4"
info "SSH transfer: $op $userAtHost $src $dst"
\#if [ "$REGION" != prod ] ;then
\#userAtHost=$LOGNAME@localhost
\#fi
\# Save, disable, and restore the verbose flag - any
\# verbose output would look like errors.
typeset verbose="$\(set -o |sed -n 's/^verbose *//p'\)"
set \+v
typeset msgs="$\(sftp $userAtHost 2>&1 <<EOF
$op $src $dst
EOF)"
if [ "$verbose" = on ] ;then
set -v
fi
\# Strip the "Connecting to host..." line, prompts, blank lines
\# and login banners. What's left should only be error messages.
typeset errs="$\(echo "$msgs" |
sed -e '/^Connecting to .*\\.\\.\\.$/d' \\
-e 's/^$//g' \\
-e 's/sftp> //g' \\
-e '/^[ ]*$/d' \\
-e '/^\#/d'\)"
if [ "$errs" != "" ] ;then
error "$errs"
return 1
fi
return 0
}