初心者の質問相談にやさしく答えるスレ Part15
聞き方が悪いから教えない、
とか、「俺は教育的目的から、わざと全部は教えないことにしている」
などという、ロートルはお断り。
初心者に優しく応えようとする気のある人が、
今となってはバカバカしく思えるような質問相談にも優しく答えるスレです。
前スレ
初心者の質問相談にやさしく答えるスレ Part14
https://mao.5ch.net/test/read.cgi/linux/1668815687/
禁止事項
・トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
・質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
・知らないのに、使ったことないのに、知ったかぶりでの書き込み
・ググれという誰でも言えそうな忠告
・俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
・意地悪な言辞 flatpakアプリの設定はどこに保存されてますか? telnet、tcpdump(?)について教えてください
いま自ホスト(Ubuntu20.04、eth0のIPアドレス192.168.0.51)で、
TCPのポート10000でLISTENしているプロセスがあります
このポートに、自ホストからtelnet 192.168.0.51 10000にて接続し、
そこでの通信データをtcpdumpでキャプチャしたいと思ってます
telnetの通信は正常に行えているのですが、
tcpdumpでは、インタフェースにeth0ではなくloを指定しないと
通信データをキャプチャできません
接続先のIPアドレスが自ホストだと、lo側のインタフェースを
つかって通信する、というように見えますが、そうなのでしょうか
eth0としてキャプチャしたいのですが、対処法はありますか loは内部の仮想的なインターフェイス
eth0は外部に向いた実物のインターフェイス
内部で完結して済む場合外部インターフェイスにパケット送っても迷惑だし電気の無駄
どうしてもeth0を通したいならルーティングテーブルを書き換える
$ ip route show table local
で現状のloを含むテーブルが参照できる >>337
回答どうもです
ホストがいま使えないので、復活したら試してみます loをキャプチャしたくないのはパケットがたくさんあるから?
eth0を見たいなら 自ホスト <=> 自ホスト の通信ではなく
自ホスト <=> 他ホスト の通信にしてキャプチャすれば簡単だよ >>326
動くかな?
if [[ $1 =~ ^sleep[0-9]+s$ ]]; then
seconds=${1#sleep}
seconds=${seconds%s}
echo "sleep $seconds [sec]"
sleep "$seconds"
fi
実行
sleep10s # 10秒スリープ >>326
以下は生成AIによるお答え(動くかな?)
シェルスクリプトで接尾辞を使って時間を指定するタイマーを作ることは可能です。以下の例は、ユーザーが `30s` のように時間を指定できるようにするシンプルなタイマースクリプトです:
```bash
#!/bin/bash
# 時間の接尾辞をチェックする関数
check_suffix() {
case "$1" in
*s) sleep ${1%s} ;;
*m) sleep $(( ${1%m} * 60 )) ;;
*h) sleep $(( ${1%h} * 3600 )) ;;
*) echo "エラー: 時間の接尾辞が不正です。s(秒), m(分), h(時間)のいずれかを使用してください。" ;;
esac
}
# コマンドライン引数から時間を取得
TIMER=$1
# 接尾辞をチェックしてsleep
check_suffix $TIMER
``` (上からの続き)
このスクリプトでは、`s` で秒、`m` で分、`h` で時間を指定できます。例えば、`./timer.sh 30s` と実行すると、30秒間スリープします。`m` や `h` も同様に使用できます。
スクリプトを実行する前に、実行権限を与えることを忘れないでください:
```bash
chmod +x timer.sh
```
これで、ご希望の機能を持つタイマーをシェルスクリプトで実装できるはずです。もし他にもシェルスクリプトに関する質問があれば、お気軽にお尋ねください!