红联Linux门户
Linux帮助

用shell处理二进制文件

发布时间:2006-02-17 19:07:25来源:红联作者:cha
一个shell script,其中有一部分是转换十六进制到十进制。道理差不多,应该和这个有点象,是Solaris环境下的。 用来转换Solaris下的Sybase interfaces file 为windows环境下的Sybase的sql.ini。

[code:1:8fab55483b]

引用:
#!/bin/sh

# This is a script to convert the interfaces file of sybase server to sql.ini of

sybase client on PC.

# Illusion/ICIL

# Intialize sql.ini

(

echo ";; Sybase Interfaces file"

echo ";;"

echo ";; []"

echo ";; =,"

echo ";;"

echo ";; Examples:"

echo ";; [JUPITER]"

echo ";; QUERY=NLMSNMP,\\JUPITER\pipe\sybase\query"

echo ";; WIN3_QUERY=WNLNMP,\\JUPITER\pipe\sybase\query"

echo ";;\n\n\n"

)>/tmp/sql

# May ignore the backup server for sybase

servers=`grep -i '^[a-z]' /opt/sybase11/interfaces | sed '/_BACKUP/d'`

for server in ${servers}; do

echo "Converting ${server} info ..."

server_info=`grep -A 2 \^"${server}"\$ /opt/sybase11/interfaces`

master_info=`echo "${server_info}" | grep "master" | awk '{ print $5 }'`

# May use a perl script to convert the number of IP too.

master_ip1=`echo "${master_info}" | cut -c11-12`

master_ip1=`echo "${master_ip1}" | tr '[a-z]' '[A-Z]'`

master_ip1=`echo "obase=10; ibase=16; ${master_ip1}" | bc`

master_ip2=`echo "${master_info}" | cut -c13-14`

master_ip2=`echo "${master_ip2}" | tr '[a-z]' '[A-Z]'`

master_ip2=`echo "obase=10; ibase=16; ${master_ip2}" | bc`

master_ip3=`echo "${master_info}" | cut -c15-16`

master_ip3=`echo "${master_ip3}" | tr '[a-z]' '[A-Z]'`

master_ip3=`echo "obase=10; ibase=16; ${master_ip3}" | bc`

master_ip4=`echo "${master_info}" | cut -c17-18`

master_ip4=`echo "${master_ip4}" | tr '[a-z]' '[A-Z]'`

master_ip4=`echo "obase=10; ibase=16; ${master_ip4}" | bc`

master_ip=`echo "${master_ip1}.${master_ip2}.${master_ip3}.${master_ip4}

`

master_port=`echo "${master_info}" | cut -c7-10`

master_port=`echo "${master_port}" | tr '[a-z]' '[A-Z]'`

master_port=`echo "obase=10; ibase=16; ${master_port}" | bc`

# add the server info to sql.ini

(

echo "[${server}]"

echo "master=NLWNSCK,${master_ip},${master_port}"

echo "query=NLWNSCK,${master_ip},${master_port}\n\n"

)>>/tmp/sql

done

# convert to PC filesystem

unix2dos /tmp/sql > /tmp/sql.ini

[/code:1:8fab55483b]
文章评论

共有 0 条评论