質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

1757閲覧

linuxのcronで複数IPを使い分ける方法

aratan

総合スコア36

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2017/04/24 07:52

クローラを作っているのですが、複数IPを使い分ける要件があります。
AWSのEC2を使い複数のIPを1つのインスタンスに割り当てることができました。

次にcronを実行してみたんですが、設定した複数のIPを使い分ける方法がわかりませんでした。
ご存知の方いれば教えて頂けますでしょうか。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

クローラで複数IPを使い分ける要件というのは、非常に「筋の悪い要件」であると思います。
こういった要件は一般的には、機械的アクセスを禁止しているサイトに短期間にアクセスを繰り返すとか、幾つかのIDを使い分けて規約に違反してアクセスする場合に発生すると思います。

以下を検討されてはいかがでしょうか?
・情報権利者から正当に情報をもらう(API等、正規手段を提供してもらう)
・幾つかのIDを使い分けなくて良いように、サービス提供者と調整する

先方に利のある条件なのであれば、十分調整が効く可能性があります。
イレギュラーなことを続けて、そこに余計なコストを掛け続けるよりよっぽど建設的な設計になるかと。

投稿2017/04/25 09:40

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lazhuward

2017/04/26 04:28 編集

低評価が入ってますが、この回答は低評価ではないです。
aratan

2017/04/26 04:40

確かに仰る事も一理あると思いますので上司と再度相談してみます。 ご回答ありがとうございました。
guest

0

通常のLinuxのルーティングの設定方法と同じですよ。

複数NICでのデフォルトゲートウェイ設定方法
Linuxルーティング追加

投稿2017/04/24 08:08

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aratan

2017/04/24 08:45

ご回答ありがとうございます。ネットワークに疎くて申し訳ないのですが、 default via [デフォルトゲートウェイIP] で設定したものがcronで実行するIPになるという認識でよさそうでしょうか?
lazhuward

2017/04/24 10:26 編集

ただ単に、ネットワークの経路を指定しているだけなので crondも、コマンドを自分で打った場合も、特に違いはありません。 通信先がどこであるかでどのNICを優先的に利用するかを設定しているだけです。 eth0が 172.16.1.0/24 via 172.16.1.254 の場合は、eth0は 172.16.1.254 を通ります。 eth1が 10.0.0.0/24 via 192.168.2.254 の場合は、eth1は 192.168.2.254 を通ります。 ping 172.16.1.123 と打った場合、eth0を利用して優先的に 172.16.1.254 を通るようになります。 ping 10.0.0.123 と打った場合、eth1を利用して優先的に 192.168.2.254 を通るようになります。 ping 192.168.0.123 と打った場合、どちらにも記載がないので、特殊な設定も書かれていないと判断し、まずeth0を利用して探しに行き、その次にeth1を利用して探すようになっています。
aratan

2017/04/25 09:04

ありがとうございます。しかしrouteコマンドを実行するとこのようになるのですが、これはまだスタートラインに立ててないのでしょうか・・・ # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ip-172-31-32-1. 0.0.0.0 UG 0 0 0 eth0 instance-data.u * 255.255.255.255 UH 0 0 0 eth0 172.31.32.0 * 255.255.240.0 U 0 0 0 eth0
aratan

2017/04/25 09:21

すみません、やりたい事を整理しますと、 EC2に複数のプライベートIPを設定し、それらにEIPを設定する。 curl ipinfo.io を実行した時にEIPのIPが返ってくればOK というものです・・・。
lazhuward

2017/04/26 05:09 編集

routeした時にeth1と出ないといけませんね。 内部用NIC1と内部用NIC2をクローラーで どっちのセグメントを優先的に探すか指定したいんだと思ってたのですが─── それだと話が変わってきますね。 ちょっとネットワークの経路がわかりませんが EC2インスタンスに2つのNIC(ENI)をアタッチさせて その2つのNICに対してそれぞれEIPを割り振っているということですか。 それであるならば、以下の手順で行いましたか? (ENI1がeth0、ENI2がeth1) 1.EC2インスタンスをENI1で作る。 2.ENI2をEC2インスタンスにアタッチする。 3.EIPをENI1にアタッチする。 4.EIPをENI2にアタッチする。 ENI1、ENI2とアタッチしたタイミングでEC2インスタンスに追加されます。 再起動もいりません。 curlでやりたいだけであれば、上記の状態であれば EC2インスタンス内部で何も設定しなくてもこうすれば簡単にできると思います。 curl --interface eth0 ipinfo.io curl --interface eth1 ipinfo.io
aratan

2017/04/26 11:58

curlでinterfaceを指定することができるのですね、少し理解が深まったかもしれません。 ということはeth0:1等の仮装ネットワークを作ってそれにEIPを設定すれば (やったことないですが...これから) curl --interface eth0:1 ipinfo.io みたいなこともできそうな気がする?ので可能性が広がるかもしれません。 すでにcloseしてしまったのにありがとうございます。 やり方を知っていれば今後の選択肢が増えるので助かります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問