انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => شبکه و سرویس‌ دهنده‌ها => نویسنده: defy در 07 شهریور 1389، 01:14 ب‌ظ

عنوان: traffic controller(حل شد)
ارسال شده توسط: defy در 07 شهریور 1389، 01:14 ب‌ظ
سلام
#!/bin/sh
#
# Simple init.d shell script that can to modified to fit your favorite distro
#
# All Rates are in Kbits, so in order to gets Bytes divide by 8
# e.g. 25Kbps == 3.125KB/s
#
# TC=/sbin/tc
# DNLD=64Kbit   # DOWNLOAD Limit
# DWEIGHT=6Kbit # DOWNLOAD Weight Factor ~ 1/10 of DOWNLOAD Limit
# UPLD=64KBit    # UPLOAD Limit
# UWEIGHT=6Kbit  # UPLOAD Weight Factor
# Filter id = {queue id Ex: 11,10} + {2 digits of the end of the ip address}
TC=/sbin/tc
Unit=KBit
Multiply=1
#Variable declaration -->
let DWN_RATE[3]=128*$Multiply
let UPL_RATE[3]=128*$Multiply
#<-- Variable declaration
tc_start()
{
#Download Queue -->
$TC qdisc add dev eth2 root handle 11: cbq bandwidth 100Mbit avpkt 1000 mpu 64
$TC class add dev eth2 parent 11:0 classid 11:3 cbq rate ${DWN_RATE[3]}$Unit weight $((${DWN_RATE[3]}/10))$Unit allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth2 parent 11:0 protocol ip handle 113 fw flowid 11:3
#<-- Download Queue
#Upload Queue -->
$TC qdisc add dev eth0 root handle 10: cbq bandwidth 100Mbit avpkt 1000 mpu 64
$TC class add dev eth0 parent 10:0 classid 10:3 cbq rate ${UPL_RATE[3]}$Unit weight $((${UPL_RATE[3]}/10))$Unit allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth0 parent 10:0 protocol ip handle 103 fw flowid 10:3
   }
tc_stop()
{
$TC qdisc del dev eth2 root
$TC qdisc del dev eth0 root
}
tc_restart()
{
tc_stop
sleep 1
tc_start
}
tc_show()
{
echo ""
echo "eth2:"
$TC qdisc show dev eth2
$TC class show dev eth2
$TC filter show dev eth2
echo ""
echo "eth0:"
$TC qdisc show dev eth0
$TC class show dev eth0
$TC filter show dev eth0
echo ""
}
case "$1" in
start)
echo -n "Starting bandwidth shaping: "
tc_start
echo "done"
;;
  stop)
echo -n "Stopping bandwidth shaping: "
  tc_stop
  echo "done"
  ;;
restart)
echo -n "Restarting bandwidth shaping: "
tc_restart
echo "done"
  ;;
show)
tc_show
  ;;
*)
echo "Usage: /etc/init.d/tc.sh {start|stop|restart|show}"
  ;;
esac
exit 0
من این برنامه رو برای مدیریت پهنای باند userهام نوشتم البته من در slackware12.1 از این برنامه استفاده می کردم و درست اجرا می شد ولی تصمیم گرفتم سرور رو عوض کنم و ubuntu server نصب کردم ولی یه سری error میده :


")syntax error: invalid arithmetic operator (error token is "
")syntax error: invalid arithmetic operator (error token is "
'etc/webmin/init/tc.sh: line 21: syntax error near unexpected token `
'etc/webmin/init/tc.sh: line 21: `tc_start()

که فکر میکنم این error ها به دلیل تفاوت bash تو slackware و ubuntu باشه ولی من نمی دونم چه تفاوتی؟!!!! :'(
ممنون می شم کسی کمکم کنه  ???
عنوان: پاسخ به: traffic controller
ارسال شده توسط: mani.zaeim در 07 شهریور 1389، 04:46 ب‌ظ
script که نوشتی رو با bash -x <scriptName> اهجرا کن و debug کن
عنوان: پاسخ به: traffic controller
ارسال شده توسط: mani.zaeim در 07 شهریور 1389، 04:52 ب‌ظ
eth2 رو به ethx یا عوض کن یا از input از کاربرت بگیر
عنوان: پاسخ به: traffic controller
ارسال شده توسط: defy در 07 شهریور 1389، 09:17 ب‌ظ
مرسی mani من کامپایلش کردم و Error هاش این شد:
[left]+ TC=$'/sbin/tc\r'
+ Unit=$'KBit\r'
+ Multiply=$'1\r'
' let 'DWN_RATE[3]=128*1
")syntax error: invalid arithmetic operator (error token is "
' $'\r'UPL_RATE[3]=128*1
")syntax error: invalid arithmetic operator (error token is "
'etc/webmin/init/tc.sh: line 21: syntax error near unexpected token `
'etc/webmin/init/tc.sh: line 21: `tc_start()[/left]

ظاهرن به r/ گیر داده راه حلی به نظرت میرسه ؟
مرسی که کمکم می کنی
عنوان: پاسخ به: traffic controller
ارسال شده توسط: mani.zaeim در 07 شهریور 1389، 11:44 ب‌ظ
let DWN_RATE[3]=128*$Multiply
let UPL_RATE[3]=128*$Multiply
عوض کن به:
let DWN_RATE[3]=$((128*$Multiply))
let UPL_RATE[3]=$((128*$Multiply))
run کن دوباره
عنوان: پاسخ به: traffic controller
ارسال شده توسط: defy در 08 شهریور 1389، 02:23 ب‌ظ
مرسی از کمکتون مشکلم حل شد
با دستور
dos2unix  <your script>
فرمت فایل رو عوض کردم
عنوان: پاسخ به: traffic controller
ارسال شده توسط: mani.zaeim در 08 شهریور 1389، 02:36 ب‌ظ
لطفا يه حل شد به عنوان تاپيكتون اضافه كنيد