1. 程式人生 > >嵌入式開發之TFTP開發環境的搭建

嵌入式開發之TFTP開發環境的搭建

#!/bin/bash
##########################################################################
#搭建TFTP服務所需要安裝的軟體有tftp-hpa,tftpd-hpa以及xinetd,其中:#
#tftp-hpa   : 是客戶端軟體;#
#tftpd-hpa  : 是服務程式;#
#xinetd     : 是新一代程序守護程式。#
##########################################################################


function creat_xinetd_conf
{
echo  "# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/


defaults
{


# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info


}


includedir /etc/xinetd.d" > /tmp/xinetd.conf 
}
function config_xinetd_conf
{
creat_xinetd_conf
filename=/etc/xinetd.conf
example=/tmp/xinetd.conf
test -f $filename     #返回值為0,代表檔案存在  返回值為1,代表檔案不存在
if [ "$?" -eq 0 ];then
echo "xinetd.conf檔案存在"
diff -E $example $filename
case $? in
1)     #檔案內容有誤
rm -rf $filename
mv -f $example $filename
echo "xinetd.conf檔案內容修改成功";;
0)     #檔案內容正確 
rm -rf $example
echo "xinetd.conf檔案內容正確";;  
*)
rm -rf $example        
echo "未知錯誤,程式終止";;
esac
else
echo "xinetd.conf檔案不存在,正在建立該檔案"
mv -f $example $filename
echo "xinetd.conf檔案建立成功"
fi
}
#============================================================================================#
function modify_tftpd_hpa
{
echo "# /etc/default/tftpd-hpa


TFTP_USERNAME=\"tftp\"
TFTP_DIRECTORY=\"/tftpboot\"
TFTP_ADDRESS=\"0.0.0.0:69\"
TFTP_OPTIONS=\"-l -c -s\"" > /tmp/tftpd-hpa
rm -rf /etc/default/tftpd-hpa
mv -f /tmp/tftpd-hpa /etc/default/tftpd-hpa
echo "tftpd_hpa 檔案內容修改成功"
mkdir -p /tftpboot
chmod 777 /tftpboot
}
#============================================================================================#
function modify_tftp
{
echo "service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c
per_source = 11
cps = 100 2
flags =IPv4
}" > /tmp/tftp
rm -rf /etc/xinetd.d/tftp
mv -f /tmp/tftp /etc/xinetd.d/tftp
echo "tftp 檔案內容修改成功"
}
#============================================================================================#
function test_tftp
{
echo "This is a test file" > /tftpboot/TEST
cd /tmp
echo "請在終端命令列中依次鍵入\"get TEST\"以及\"quit\""
tftp localhost
cat /tmp/TEST   # 返回值為0,表示成功檢視指定的檔案  返回值為1,表示不能正常檢視指定的檔案
if [ $? -eq 0 ]; then
echo "tftp  測試成功,可以正常使用"
rm -rf /tftpboot/TEST /tmp/TEST
else 
echo "tftp  測試失敗,請檢查tftp配置"
rm -rf /tftpboot/TEST /tmp/TEST
fi
}
#============================================================================================#




function step_1     #安裝TFTP相關服務
{
apt-get update                #安裝軟體之前,先升級一下資料庫,獲取軟體包的最新相關資訊
apt-get install tftp-hpa      #安裝TFTP服務的客戶端軟甲
apt-get install tftpd-hpa     #安裝TFTP服務的伺服器端軟體
apt-get install xinetd        #安裝新一代程序守護程式
}
function step_2     #配置TFTP相關服務
{

config_xinetd_conf            #配置/etc/xinetd.conf檔案
modify_tftpd_hpa           #修改/etc/default/tftp-hpa檔案
modify_tftp            #安裝TFTP服務的伺服器端軟體
}
function step_3     #重啟TFTP相關服務
{
service tftpd-hpa restart     #重新啟動tftpd-hpa
/etc/init.d/xinetd reload     #重新載入xinetd服務程式
/etc/init.d/xinetd restart    #重新啟動xinetd服務程式
}


function step_4     #測試TFTP相關服務
{
test_tftp           #測試tftp服務
}


echo "選項1 安裝TFTP相關服務"
echo "選項2 配置TFTP相關服務"
echo "選項3 重啟TFTP相關服務"
echo "選項4 測試TFTP相關服務"
echo "鍵入quit,退出TFTP安裝"
echo "請鍵入數值,執行您所需要的操作: "


read -r Step 
while [ $Step != quit ]
do
while [ $Step -lt 1 -o $Step -gt 4 ]
do
echo "對不起,您輸入的選項有誤,請輸入數字1—4之間的數值!"
read -r Step
done
case "$Step" in
1)
read -p "安裝過程中出現的選項,請直接確定,不必更改,按任意鍵繼續安裝"
step_1;;
2)
step_2;;
3)
step_3;;
4)
step_4;;
*)
echo "出現致命錯誤,請檢查指令碼程式!";;
esac
echo "操作已完成!"
echo "============================="
echo " "
echo " "
echo " "
echo " "
echo "選項1 安裝TFTP相關服務"
echo "選項2 配置TFTP相關服務"
echo "選項3 重啟TFTP相關服務"
echo "選項4 測試TFTP相關服務"
echo "鍵入quit,退出TFTP安裝"
echo "請鍵入數值,執行您所需要的操作: "
read -r Step
echo " "
echo " "
done


exit