ioctl()
bashから電話をかけようとしています。これはCで簡単に実行できるため、ツール(https://github.com/jerome-pouiller/ioctl)はこの機能をラップします。
ただし、これを行うとツールも一緒にデプロイする必要があるため、スクリプトのデプロイがより困難になります。
同じタスクを実行できるDebian APTリポジトリにすでに含まれている他のツールはありますか?では、apt install
スクリプトで簡単な作業を実行できますか?
答え1
システムioctl
コールが取るパラメータのリストは、要求によって大きく異なります。多くの要求は、構造化データを入力として使用するか、構造化データを出力として生成します。これにより、シェルで使用するのが厄介になります。もちろん、特定のioctlリクエストや特定のセット(stty
端末ioctlを使用するなど)を中心とするいくつかのコマンドがありますが、汎用コマンドではありません。リンクされたツールを使用すると、バイナリデータを内外に渡すことができますが、シェルでそのデータを操作することは困難です。
PerlやPythonのようなより高いレベルのスクリプト言語でプログラムを書くことをお勧めします。これはあいまいなツールを必要としないため、展開が簡単になります。ほとんどのUnixファミリーシステムにはPerlがあり、ほとんどの場合はPythonもあります。
Perlには事前定義済みioctl
機能そして、要求された値の少なくともいくつかのシンボル名へのアクセスを提供しますsys/ioctl.ph
。利用可能なシンボル名をリストする方法がわかりません。追加の入力/出力はスカラー(バイト文字列など)として提供されます。
Pythonではioctl
機能fnctl
モジュールから。これtermios
モジュールは、端末関連の ioctl のいくつかのシンボル名を定義します。追加の入出力は整数またはバイト文字列として渡すことができます。
Pythonには別のアプローチがあるかもしれません。ctypes
基準寸法、これは高度な言語でC関数を呼び出す非常に良い方法です。呼び出すioctlが構造体を入力または出力として使用するように定義されている場合は非常に良いです。なぜなら、ctypesを使用すると、データ型のサイズ、パディング、単語について心配することなく、Cコンパイラがレイアウトする方法で構造体にアクセスできるからです。区間順など