最新記事

「刑務所の名前」を見つけて指定せずにFail2banでIPアドレスをバインド/禁止解除するUnixコマンド(およびbashエイリアス)またはスクリプト
bash
shell-script
ubuntu
alias
fail2ban

「刑務所の名前」を見つけて指定せずにFail2banでIPアドレスをバインド/禁止解除するUnixコマンド(およびbashエイリアス)またはスクリプト

Ubuntu 20.04では、fall2banを使用してIPアドレスを禁止および禁止解除するためのbashエイリアス(またはスクリプト)を作成しています。 飼育剤通事論慣れています。禁止解除IP アドレスは次のとおりです。 fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE そして通事論私は慣れている禁止するIP アドレスは次のとおりです。 fail2ban-client set YOURJAILNAMEHERE banip IPADDRESSHERE だから私の bashエイリアス構文~のため禁止令を解除IP アドレスは次のとおりです。 alias unbanip='sudo fail2ban-client set YOURJAILNAMEHERE unbanip' そして私の bashエイリアス構文~のため禁止するIP アドレスは次のとおりです。 alias banip='sudo fail2ban-client set YOURJAILNAMEHERE banip' 次に、実際強く打つニックネーム~のため禁止令を解除IP アドレスは次のとおりです。 alias unbanip='sudo fail2ban-client set sshd unbanip' そして実際強く打つニックネーム構文は次のとおりです。禁止するIP アドレスは次のとおりです。 alias banip='sudo fail2ban-client set sshd banip' エイリアスを使用して生成された実際のbashコマンドは次のとおりです。 # Unban a specific IP unbanip 123.456.78.90 # Ban a specific IP banip 123.456.78.90 これらすべての問題は、次の理由で指定されたIPを直接禁止する実際のコマンドまたはbashエイリアスを実際に作成できないことです。 1)ブロックを解除するときは、まず禁止IPの刑務所を見つけて、bashコマンドに刑務所を入力してください。 2)ブロックするには、すべての刑務所のIPをブロックするには、1つのコマンドですべての刑務所を指定する必要があります。 私がしたいことは 1)すべての刑務所でIPを自動的に禁止するIP禁止命令(刑務所を指定せず)を提案します。 2)IP禁止が属する刑務所を見つける必要なしにIP禁止を解除するコマンドを実行します。デフォルトでは、unban コマンドは特定の IP が属する刑務所を検索し、自動的に構文の YOURJAILNAMEHERE 部分に入力して 1 つ以上の刑務所を検索します。 bash技術を持っている人なら誰でもこのタスクを実行するためのコマンド(対応するbashエイリアスを含む)またはスクリプトを作成できますか?どんな助けでも大変感謝します!

Admin

変数の中にスペースがあるディレクトリパスを使用して、ディレクトリ内のすべてのファイルをどのようにキャプチャできますか?
bash
variable
cat

変数の中にスペースがあるディレクトリパスを使用して、ディレクトリ内のすべてのファイルをどのようにキャプチャできますか?

folder1スペースを含むパス変数があります。 TEST=path/with\ space/to/folder1/ すべてのファイルをリンクしたいがエラーが発生しますfolder1。cat cat "$TEST"* > test cat: path/with: No such file or directory cat: 'space/to/folder1/*': No such file or directory これを自分で試してみるとうまくcat path/with\ space/to/folder1/ > testいきます。 また、二重引用符を使用することもできます。 TEST="path/with space/to/folder1/" cat "$TEST" > total しかし、パスを使ってこれを正しく実行するには\ ?

Admin

Zshのメニューベースの完成
bash
zsh
prompt

Zshのメニューベースの完成

Powershellを使用するWindows端末の場合、非常に便利な機能を提供するPSReadlineプラグインがあります。たとえば、入力を開始すると、閲覧可能な履歴リストの表示が表示されます。したがって、入力すると、cd私が使用した最近の10個のコマンドのリストが表示され、cdそのリストを上下に移動して1つを選択できます。 私の好きなもう1つの機能は、cdTabキーを入力してタップできるすべてのサブディレクトリのリストを表示できることです。また、上/下/左/右キーを押してこのリストからディレクトリを選択し、そのディレクトリに移動することもできます。 WSL(Ubuntu)プロンプトに対して同様の操作を実行できますか?しかし、私はPowershellとWSLの両方でプロンプトとしてoh-my-poshを使用します。 oh-my-zshにはこのような機能があると思いますが、oh-my-poshのテーマを設定するのに多くの時間を費やすので、インストールしないことをお勧めします。テーマなしでoh-my-zshプラグインを使用する方法がなければ。

Admin

ディレクトリのサブディレクトリを一覧表示するには?
bash

ディレクトリのサブディレクトリを一覧表示するには?

特定のパスのサブディレクトリを一覧表示する必要があります。区切りは改行文字ではなく空白でなければなりません。 また、サブディレクトリへの絶対パスは望ましくなく、その名前のみが必要です。 # correct dir1 dir2 dir3 # incorrect: separation with new lines dir1 dir2 dir3 # incorrect: absolute paths /home/x/y/dir1 /home/x/y/dir2 /home/x/y/dir3 他の記事もたくさん見ましたが、この投稿しかし、彼らは私の要求を満たしていません。 私はこれを試しましたが、ls -d ~/y新しい行で区切られた絶対パスをリストします。私はsedを使用してパスから無関係な部分を削除し、すべての新しい行を削除できると思いました。しかし、動作させることはできません。より良い解決策があるはずです。

Admin

bashを使用して関数をインラインに拡張(実行)して、結果を他のコマンドの引数として使用できますか?
linux
bash
shell

bashを使用して関数をインラインに拡張(実行)して、結果を他のコマンドの引数として使用できますか?

私は仕事用にいくつかの簡単なロギングツールを作成していますが、シェルにコマンドを入力したときに発生する小さな問題を解決しようとしています。関数の結果をインラインに保ちながら、他のコマンドの引数として使用することをできるだけスムーズにしたいと思います。たとえば、 sudo some-command --output "_log.txt" => sudo some-command --output "2021_project_a_log.txt" 特定のコマンドを書くときに私の機能を拡張(または実行)したいと思います。二重ラベルは単に理解を助けるためのものです。これは「インライン」という意味ですが、用語を誤って使用したものかもしれません。コマンドを分割したくありません。つまり、my-functionを実行して変数を保存するか、stdoutを使用してsome-commandと入力します。これらの機能は、デフォルトでプロジェクト名、タイムスタンプなどのメタデータを印刷します。これを使用して、さまざまなコマンドとツールの出力名を指定して保存します。 これまで私が見つけた方法は次のとおりです。 「`my-function`_log.txt」と書くことができます。 「$(my-function)_log.txt」と書くことができます。 その後、これら2つをそのまま使用するか(この場合は最初に確認できません)、ショートカットを使用して拡張できますが、Ctrl + Alt + E解決shell-expand-lineする問題は次のとおりです。 すべての機能(正常)とすべてのエイリアス(正常ではない)が拡張されます。 問題が発生する可能性がある文字列入力にこのタイプの拡張機能を使用するため、引用符は削除されました。 一部のエイリアスは長くて不要で、プロンプトが複雑になる可能性があるため、すべてのエイリアスを拡張したくありません。 質問: Ctrl + Alt + Eのように選択した機能だけを拡張したり、カーソルの下の機能などを拡張する方法はありますか?または、特定のエイリアスの拡張をブロックできますか? ありがとうございます!

Admin

ls は再帰的にフルパスを表示します。
linux
bash
ls
tree

ls は再帰的にフルパスを表示します。

Linuxで同じことをする方法は明らかにいくつかありますが、最近はfor i in xxxツリー内の各項目のリストを再帰的に参照する必要がありました。をtree実行して(またはディレクトリ名のみを取得する)tree -fail解決策を見つけましたtree -faildが、次の質問がありました。ls? $ tree -fail . ./.custom ./custom_loader.sh ./.git ./.git/branches ./.git/COMMIT_EDITMSG ./.git/config ./.git/description ./.git/HEAD ./.git/hooks ./.git/hooks/applypatch-msg.sample

Admin

LAMP サーバーを簡単にインストールするには、スクリプトに整数式が必要です。
bash
scripting

LAMP サーバーを簡単にインストールするには、スクリプトに整数式が必要です。

私はLinuxに関しては初心者です。 先生は、さまざまなパッケージ(MYSQLのみ、PHP、またはすべてのパッケージなど)をインストールするオプションとともに、LAMPサーバーをインストールするスクリプトを生成するように指定しました。 合格後に修正されたコードは次のとおりです。https://shellcheck.net/、 #!/bin/bash function apache { sudo apt update sudo apt install apache2 #ja deaktivizē apache2 serveri un izmetas errors, kad mēģina to aktivizēt: #sudo echo "deb http://archive.ubuntu.com/ubuntu trusty main universe restricted multiverse" > /etc/apt/sources.list #sudo apt-get update #sudo apt-get purge apache2* #sudo apt-get install apache2 #sudo service apache2 start #sudo service apache2 status #Pārbaudīt vai viss strādā pareizi sudo ufw app list sudo ufw allow in "Apache" #Šis profils atver tikai 80. portu (parasta, nešifrēta tīmekļa trafika). sudo ufw enable #aktivizē ugunsmūri sudo ufw status #pārbauda vai 80 portam ir atļauts iziet caur ugunsmūri echo -e "Lai pārbaudītu vai viss sanāca, ieejiet jūsu pārlūkprogramma un ierakstiet šo http://jusu_servera_IP, Ip adresi var iegūt ar komandu hostname -I, tālāk ir dota jūsu IP adrese:" hostname -I #parādīs IP adresi(pirmā) echo "Ievadiet to konsolē, lai to varētu izmantot vēlāk" #write it in console to use it later read -r ip_address echo "Ievadi savu domēna vārdu" #input your domain name read -r domain sudo mkdir /var/www/"$domain" sudo chown -R "$USER":"$USER" /var/www/"$domain" cd /etc/apache2/sites-available/ echo " ServerName $domain ServerAlias www.$domain ServerAdmin webmaster@localhost DocumentRoot /var/www/$domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined " > "$domain".conf echo "Direktorija $domain un fails $domain.conf ir izveidoti" sudo a2ensite "$domain" sudo a2dissite 000-default sudo systemctl reload apache2 sudo apache2ctl configtest sudo systemctl reload apache2 cd /var/www/"$domain" echo " $domain majaslapa

Sveiki pasaule!

Si ir galvena lapa jusu majaslapai $domain.

" > index.html #xdg-open http://localhost #lietojot operu met brīdinājumus echo "Ierakstiet pārlūkprogramma http://localhost vai http://$ip_address" } function remove_apache { #sudo service apache2 stop sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common sudo apt-get autoremove --purge echo -e "Vai jūs gribat arī noņemt apache izveidotās direktorijas (ja/ne) ?" read -r manual while [[ "$manual" != "ja" && "$manual" != "ne" ]]; do #salidzina && = AND echo "Jums jaievada ja vai ne, lai turpinātu." read -r manual done if [ "$manual" = ja ]; then echo "Lai izdzēstu direktorijas, kuras jūs gribat izdzēst ar komandu sudo rm -Rf (piemēram, sudo rm -Rf /etc/apache2 /usr/lib/apache 2), tālāk būs dotas jūsu direktorijas:(ja tomēr nevēlaties izdzēst šīs direktorijas, ierakstiet jebko citu)" whereis apache2 read -r remove_direktorijas $remove_direktorijas elif [ "$manual" = ne ]; then echo -e "Apache2 ir atinstalēta." fi } function mysql { sudo apt install mysql-server echo -e "Tālāk varēs izvēlēties vai instalēt mysql drošību ar VALIDATE PASSWORD PLUGIN vai bez(spiežot jebkuru citu pogu izņemot y vai Y)" echo -e "Tālāk prasīs MYsql administrātora paroli vienalga vai jūs VALIDATE PASSWORD PLUGIN instalējāt vai nē. Un citas lietas, kas būs aprakstītas tālāk." sudo mysql_secure_installation echo -e "Lai izietu no MySQL konsoles rakstiet exit" sudo mysql } function remove_mysql { sudo apt-get remove --purge mysql* } #function php { #sudo apt install php libapache2-mod-php php-mysql | man ieķērās instalācija(loop) ja liku funkcijā šo #sudo systemctl restart apache2 #php -v #} function remove_php { sudo apt-get purge php7.* sudo apt-get autoclean sudo apt-get autoremove } function phpmyadmin { sudo apt update echo -e "Parādīsies uzvedne, izvelāties apache2(jānospiež taustiņš space un enter)" echo -e "Kad tiek vaicāts, vai datu bāzes iestatīšanai jāizmanto dbconfig-common, atlasiet Jā" sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl sudo phpenmod mbstring sudo systemctl restart apache2 #xdg-open http://localhost/phpmyadmin echo "Ierakstiet pārlūkprogramma http://localhost/phpmyadmin vai http://$ip_address/phpmyadmin" } function remove_phpmyadmin { sudo apt-get remove phpmyadmin sudo apt-get purge phpmyadmin sudo apt-get autoremove } while true do echo "1. Instalēt Apache" echo "2. Instalēt MySQL" echo "3. Instalēt PHP" echo "4. Instalēt phpMyAdmin" echo "5. Instalēt LAMP(Visu)" echo "6. Atinstalēt Apache" echo "7. Atnstalēt MySQL" echo "8. Atnstalēt PHP" echo "9. Atinstalēt phpMyAdmin" echo "10. Atinstalēt LAMP(Visu)" echo "0. Iziet" read -r INPUT if [ "$INPUT" -eq 1 ]; then apache elif [ "$INPUT" -eq 2 ]; then mysql elif [ "$INPUT" -eq 3 ]; then php elif [ "$INPUT" -eq 4 ]; then phpmyadmin elif [ "$INPUT" -eq 5 ]; then apache mysql sudo apt install php libapache2-mod-php php-mysql sudo systemctl restart apache2 php -v phpmyadmin elif [ "$INPUT" -eq 6 ]; then remove_apache elif [ "$INPUT" -eq 7 ]; then remove_mysql elif [ "$INPUT" -eq 8 ]; then remove_php elif [ "$INPUT" -eq 9 ]; then remove_phpmyadmin elif [ "$INPUT" -eq 10 ]; then remove_apache remove_mysql remove_php remove_phpmyadmin elif [ "$INPUT" -eq 0 ]; then exit fi done エラーは私のルートパーティションを埋めるsyslogファイルを生成しているので(shellcheck.netには記載されていません)、この問題を解決するにはどうすればよいですか? システムログメッセージ: https://i.stack.imgur.com/bjVzH.jpg これらのメッセージは、単にその行の行を記述するために必要な整数式です。 elif [ "$INPUT" -eq 5 ]; then AdminBeeが提案したように「読み取り」の後に挿入しecho "$INPUT" てスクリプトを実行した後、ターミナルでEnterキーを押すと、次の結果が表示されます。 ./lamp: line 161: [: : integer expression expected ./lamp: line 163: [: : integer expression expected ./lamp: line 165: [: : integer expression expected ./lamp: line 167: [: : integer expression expected ./lamp: line 169: [: : integer expression expected ./lamp: line 176: [: : integer expression expected ./lamp: line 178: [: : integer expression expected ./lamp: line 180: [: : integer expression expected ./lamp: line 182: [: : integer expression expected ./lamp: line 184: [: : integer expression expected ./lamp: line 189: [: : integer expression expected

Admin

SSHセッション後のCase文の構文エラー
linux
bash
shell
bourne-shell

SSHセッション後のCase文の構文エラー

#!/bin/sh echo -n "Enter the raspberry ip address you want to connect:" read Rasp_id sshpass -p "the@Donut" ssh -t -X -oStrictHostKeyChecking=no pi@$Rasp_id << E2 echo -e "Enter the case you want to echo\n 1.1 a \n 2.1 b" read option case "\$option" in 1) echo "a" ;; 2) echo "b" ;; esac E2 SSHセッションを開始してからリモートシステムでいくつかの修正を実行するスクリプトを作成していますが、次の構文エラーが発生します。 bash: line 3: syntax error near unexpected token `)' bash: line 3: ` 1)'

Admin

行の読み取り中に予期しないトークン「完了」の近くに構文エラーが発生しました。
bash
shell-script
readline

行の読み取り中に予期しないトークン「完了」の近くに構文エラーが発生しました。

このエラーは引き続き発生しますsyntax error near unexpected token 'done'が、理由を理解できません。 dos2unix *.sh後で追加しようとしましたが、#!/bin/sh「完了」エラーに加えて、そのファイルやディレクトリがないというエラーのみが表示されました。 これは .sh ファイルです。私はスクリプトに初めて触れました。助ける? 私は走っている sh thisfile.sh プログラム入力入力 Linuxで 編集する変数の周りに引用符を追加しました。同じエラー #!/bin/sh fst=$1 input=$2 while read line do result=$(cat "$line" | program "$fst") if [ "$result" = "" ]; then printf "$line\t=>\t *none* 0\n" else printf "$line\t=>\tyes\n" fi done < "$input" 「$input」は、「they」「can」「fish」「they」「can」「take」「table」のような4行の単語です。 実行するとcat "$line" | program "$fst"うまくいった。 ノートループ内のすべてを取り出し、printf $ lineだけを使用すると、同じ「完了」構文エラーが発生します。

Admin

テストコマンドにコマンドを注入する方法
bash
shell-script
test

テストコマンドにコマンドを注入する方法

./myscript私はいくつかのコマンドを呼び出したい()などの独自のスクリプトを書いています。だから、次のようにシェルスクリプトにコマンドを挿入する方法を学びたいと思います。 #!/bin/bash set -x if test 1 -eq $1; then echo "Correct answer." fi ここに別のコマンドを注入できますか?このようなコマンドを挿入しようとすると、./myscript.sh "1 && echo Yes"次の結果が表示されます。 + test 1 -eq 1 '&&' echo Yes ./myscript.sh: line 7: test: too many arguments ここに何かを注入するためにいくつかの他の方法も試しましたが、方法が見つかりませんでした。

Admin

zipファイルを解凍できません。継続エラーが発生します。
bash
tar
zip
gzip

zipファイルを解凍できません。継続エラーが発生します。

下のリンクでステップバイステップで試してみましたが、カール部分は機能しますが、入力をしてみました。 tar zxf admit.tar.gz わかりました。 tar: Unrecognized archive format tar: Error exit delayed from previous errors. 何をすべきかわかりません。ダブルクリックして解凍しましたが、admit.tar.gz.cpgz 何をすべきかわからないため、新しいファイルが表示されます。 Webサイトで提供されている手順に従おうとしていますが、動作しません。 http://admit.astro.umd.edu/installguide.html

Admin