LoginSignup
1
2

More than 5 years have passed since last update.

linux > 5秒ごとにUDPで文字列を送信するbashスクリプト (不完全版)

Last updated at Posted at 2015-09-09
動作確認
CentOS 6.5 (32bit)

やりたいこと
"時:分,データ"の形式 (例 "02:10,-0.9")を5秒ごとに送信したい。

やっつけ仕事的に以下で実装した。

udpSend-exec
#!/bin/env bash

for data in \
"00:00,0.2" "02:10,-0.9" "03:40,0.3" \
"05:30,-0.9" "09:30,0.2" "11:30,0.4" \
"13:30,0.1" "16:30,0.5" "18:30,0.9" "22:00,-0.9";do
  sleep 4
##  echo $data | nc -u 192.168.10.3 6000 &
  echo $data | nc -w 1 -u 192.168.10.3 6000 &
done

[追記 2015/09/10] 上記ncの使用について訂正した。

結果
$ bash udpSend-exec 
00:00,0.2
02:10,-0.9
03:40,0.3
05:30,-0.9
09:30,0.2
11:30,0.4
13:30,0.1
16:30,0.5
18:30,0.9
[tmp]$ 22:00,-0.9

5秒ごとに 192.168.10.3(ポート6000)へ送信できた。

不完全というタイトルの理由1

上記スクリプトにて ncに&をつけないと処理がhaltしている感じだった。
送信のブロッキングになってしまったのか未調査。
&をつけて実行できたが、本来のやり方ではないかもしれない。(が、今必要な処理としてはとりあえず使える).

[追記 2015/09/10] -w 1にて1秒でタイムアウトするようにした。

不完全の理由2

http://qiita.com/7of9/items/6a19c036ada7af01078a
あたりで教えていただいたファイル読込み処理をやれば、もっと綺麗なコードができるはず。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2