タグ付けされた質問 「scripting」

スクリプトは、スタンドアロンの実行可能プログラムにコンパイルされるのではなく、インタープリタープログラムによって実行される一連のコマンドまたは命令です。

25
x秒ごとにUnixコマンドを永久に繰り返す
repeat最初の引数がコマンドを繰り返す回数である組み込みのUnixコマンドがあります。コマンドは(引数付き)の残りの引数で指定されますrepeat。 例えば、 % repeat 100 echo "I will not automate this punishment." 指定された文字列を100回エコーしてから停止します。 forever最初の引数が繰り返しの間に一時停止する秒数であり、永久に繰り返されることを除いて、同様に機能する同様のコマンドが必要です。例えば、 % forever 5 echo "This will get echoed every 5 seconds forever and ever." 私はそれを書く前にそのようなものが存在するかどうかを尋ねると思った。私はそれが2行のPerlまたはPythonスクリプトのようなものであることを知っていますが、これを行うためのより標準的な方法があるかもしれません。そうでない場合は、お好みのスクリプト言語であるRosetta Stoneスタイルで解決策を投稿してください。 PS:これを行うより良い方法はrepeat、繰り返しの回数(-1は無限を意味する)と繰り返しの間にスリープする秒数の両方を取るように一般化することです。上記の例は次のようになります。 % repeat 100 0 echo "I will not automate this punishment." % repeat -1 5 echo "This will get …

3
スクリプトでの変数の割り当てに「$ {a:-b}」を使用する
私は他の人が書いたいくつかのスクリプト(特にRed Hat)を見てきましたが、それらの変数の多くは次の表記法を使用して割り当てられる VARIABLE1="${VARIABLE1:-some_val}" か、他の変数を展開します VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 値を直接宣言するだけでなく、この表記法を使用する意味は何ですか(例:)VARIABLE1=some_val? この表記法や、防止される可能性のあるエラーには利点がありますか? :-このコンテキストで特定の意味を持っていますか?

8
シェルスクリプトでsetuidを許可する
setuid許可ビットではなく、エグゼキュータの所有者の実効ユーザーIDを使用してプログラムを実行するためのLinuxに指示します: > cat setuid-test.c #include <stdio.h> #include <unistd.h> int main(int argc, char** argv) { printf("%d", geteuid()); return 0; } > gcc -o setuid-test setuid-test.c > ./setuid-test 1000 > sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test > ./setuid-test 65534 ただし、これは実行可能ファイルにのみ適用されます。シェルスクリプトはsetuidビットを無視します。 > cat setuid-test2 #!/bin/bash id -u > ./setuid-test2 1000 > …


3
リモートマシンでローカルスクリプトを実行し、引数を含めるにはどうすればよいですか?
ローカルで実行すると正常に実行されるスクリプトを作成しました。 ./sysMole -time Aug 18 18 引数"-time"、"Aug"、"18"、および"18"は、スクリプトに正常に渡されます。 現在、このスクリプトは、リモートマシンで実行されるように設計されていますが、ローカルマシンのローカルディレクトリから実行されます。例: ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole それもうまくいきます。しかし、たとえば、前述の引数(-time Aug 18 18)を含めようとすると問題が発生します。 ssh root@remoteServer "bash -s" < /var/www/html/ops1/sysMole -time Aug 18 18 そのスクリプトを実行した後、次のエラーが表示されます。 bash: cannot set terminal process group (-1): Invalid argument bash: no job control in this shell 私が間違っていることを教えてください、これは非常にイライラします。

3
コマンドライン引数をbashスクリプトに渡す
bashスクリプトプログラミングは初めてです。 入力として1つの文字列引数(名前)を受け入れるbashスクリプト 'deploymLog'を実装します。 [root@localhost Desktop]# ./deploymLog.sh name ここで、コマンドラインを介して文字列の引数(名前)を渡したい 最初のステップとして、現在のタイムスタンプをこの入力文字列とともにLogone.txt、現在のディレクトリにあるログファイルに以下の形式で追加する必要があります。 [name]=[System time timestamp1] どのように可能ですか?
114 bash  shell  scripting 

6
&&および||の混乱した使用 オペレーター
私は流し読みました/etc/rc.d/init.d/sendmail(私はこれはめったに使用されているけど、私は受験のために勉強しています)ファイル、および私は約少し混乱になった&&と||演算子。次のようなステートメントでそれらを使用できる場所を読みました。 if [ test1 ] && [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi ただし、このスクリプトは次のような単一行のステートメントを示します。 [ -z "$SMQUEUE" ] && SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 これらは&&and ||演算子を使用してテストに基づいて応答を引き出しているように見えますが、これらの演算子のこの特定の使用に関する説明を掘り下げることはできませんでした。誰もがこれらがこの特定のコンテキストで何をするのか説明できますか?

6
どうすればbashで2つの数字を追加(減算など)できますか?
私はで数字と操作を読むことができます: echo "First number please" read num1 echo "Second number please" read num2 echo "Operation?" read op しかし、その後、番号を追加する私のすべての試みは失敗します: case "$op" in "+") echo num1+num2;; "-") echo `num1-num2`;; esac 実行: First number please 1 Second mumber please 2 Operation? + 出力: num1+num2 ...または... echo $num1+$num2;; # results in: 1+2 ...または... echo …

6
パスフレーズなしの自動化されたssh-keygen、どのように?
ssh-keygen後で使用するいくつかのpub / privateキーペアを呼び出して作成する自動スクリプトを作成したいと思います。原則として、すべてが正常に機能します ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q 。......キーを暗号化するパスフレーズを要求されることを除きます。これにより、現在の自動化が困難になります。 コマンドライン引数を介してパスフレーズを提供-N thepassphraseして、プロンプトが表示されないようにすることができます。それでも、暗号化によってさらにセキュリティで保護されたキーを持つことさえ望んでおらず、キーペアをプレーンテキストにしたいです。 この問題に対する(最良の)解決策は何ですか? -qおそらく「/静かなサイレント」を意味オプションは、まだパスフレーズの相互作用を回避していません。また、私はこのようなものを見つけていません ssh-keygen ...... -q --no-passphrase 「パスフレーズの欠落」の長所と短所について説教したり、教えたりしないでください。(スクリプトとしてではなく)インタラクティブフォームでは、ユーザーは[ENTER]を2回押すだけで、キーはプレーンテキストとして保存されます。これは、次のようなスクリプトで達成したいことです。 #!/ bin / bash command1 command2 var = $(command3) #これはスクリプトを停止してパスワードを要求するべきではありません ssh-kegen -b 2048 -t rsa -f / tmp / sshkey -q
86 ssh  scripting 

5
シバンは、スクリプトを実行するシェルを決定しますか?
これはばかげた質問かもしれませんが、私はまだ質問します。シバンを宣言した場合 #!/bin/bash の初めにmy_shell_script.sh、私は常にbashを使用してこのスクリプトを呼び出す必要がありますか [my@comp]$bash my_shell_script.sh または私は例えばを使用できます [my@comp]$sh my_shell_script.sh 私のスクリプトは、シバンを使用して実行中のシェルを決定しますか?kshシェルでも同じことが起こりますか?AIXを使用しています。

3
スクリプトに$“ dollarsign-prefixed string”があるとはどういう意味ですか?
私はこれを初期化スクリプトで見ました: echo $"Stopping Apache" そのドル記号は何のためですか? これまでの私の研究: 私はこれをbashマニュアルで見つけました: 引用 場合は設定、$'string'および$"string"引用は内で行われ${parameter}、二重引用符で囲まれた展開。このオプションはデフォルトで有効になっています。 ...しかし、$接頭辞のある文字列とない文字列の違いは見つかりません: $ echo "I am in $PWD" I am in /var/shared/home/southworth/qed $ echo $"I am in $PWD" I am in /var/shared/home/southworth/qed $ echo $"I am in ${PWD}" I am in /var/shared/home/southworth/qed $ echo "I am in ${PWD}" I am in /var/shared/home/southworth/qed …

6
whileループを使用して複数のサーバーにSSH接続する
servers.txtサーバーのリストを含むファイルがあります: server1.mydomain.com server2.mydomain.com server3.mydomain.com ファイルをwhile1行ずつ読み取り、各行をエコーすると、すべて正常に機能します。すべての行が印刷されます。 $ while read HOST ; do echo $HOST ; done < servers.txt server1.mydomain.com server2.mydomain.com server3.mydomain.com ただし、すべてのサーバーにsshしてコマンドを実行すると、突然whileループが機能しなくなります。 $ while read HOST ; do ssh $HOST "uname -a" ; done < servers.txt Linux server1 2.6.30.4-1 #1 SMP Wed Aug 12 19:55:12 EDT 2009 i686 GNU/Linux これは、リストの最初のサーバーのみに接続し、すべてのサーバーには接続しません。ここで何が起こっているのか分かりません。誰か説明してもらえますか? forループを使用するとうまく機能するため、これはさらに奇妙です。 …

2
su options-別のユーザーとしてコマンドを実行する
スクリプトから別のユーザーとしてコマンドを実行する方法を考えていました。 スクリプトの所有者をルートとして設定しています。また、スクリプト内で次のコマンドを実行して、hudsonユーザーとしてコマンドを実行しています。 su -c command hudson これは正しい構文ですか?
75 bash  scripting  su  sudo 

9
同じ文字列で複数のファイルを同時にgrepする方法は?
確認する必要がある一連のログファイルがあり、同じファイルの特定の文字列を一度に検索したいのですが、これは可能ですか?現在使用しています grep -E 'fatal|error|critical|failure|warning|' /path_to_file これを使用して複数のファイルの文字列を一度に検索するにはどうすればよいですか?これをスクリプト化する必要がある場合、誰かがこれを行う簡単なスクリプトを提供できますか?
57 scripting  grep 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.