ウィゲット
概要
wget は一个下载文件的工具,用在命令行下
、ソフトウェアをダウンロードするか、リモート サーバーからローカル サーバーにバックアップを復元します
wget は HTTP、HTTPS、FTP プロトコルをサポートし、HTTP プロキシを使用できます
支持自动下载
- wget は、ユーザーがシステムを終了した後にバックグラウンドで実行できます。
- は、大規模なファイルをダウンロードするときに継続的なユーザーの参加が必要な他のほとんどのブラウザと比較して、システムにログインし、wget ダウンロード タスクを開始してからシステムを終了できることを意味します。
wget将在后台执行直到任务完成
データの量が多いため、利点はより明らかです
非常に安定した
- 帯域幅が非常に狭く、ネットワークが不安定な状況でも優れた適応性を発揮します。
- ネットワーク上の理由でダウンロードが失敗した場合、wget はファイル全体がダウンロードされるまで試行を続けます。
- サーバーがダウンロード プロセスを中断した場合、サーバーは再度サーバーに接続し、停止したところからダウンロードを続行します。
使用
コマンド形式:
wget [参数] [URL地址]
インターネットからリソースをダウンロードします。ディレクトリが指定されていない場合、ダウンロードされたリソースはデフォルトで現在のディレクトリに設定されます。
単一のファイルをダウンロードする
インターネットからファイルをダウンロードすると保存在当前目录
、ダウンロード プロセス中に進行状況バーが表示されます 、(ダウンロード完了率、ダウンロードされたバイト数、現在のダウンロード速度、残りのダウンロード時間)を含みます。
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
速度制限のあるダウンロード
wget が実行されると、デフォルトでダウンロード可能なすべての帯域幅が占有されます。ただし当你准备下载一个大文件
他のファイルをダウンロードする必要がある場合は、速度を制限する必要があります
wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
バックグラウンドダウンロード
非常に大きなファイルをダウンロードする場合、パラメータ -b を使用してバックグラウンドでダウンロードできます
wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
次のコマンドを使用してダウンロードの進行状況を確認します
tail -f wget-log
ファイルのダウンロードの再試行回数を増やす
ネットワークに問題がある場合や、ダウンロードするファイルが大きい場合にも失敗することがあります。 wget默认重试20次连接下载文件
。必要に応じて、 --tries を使用して再試行の回数を増やすことができます。
wget --tries=40 URL
複数のファイルをダウンロードする
まず、ダウンロードリンクを含むファイルを保存します
cat filelist.txt
url1
url2
url3
url4
次に、次のコマンドを使用します
wget -i filelist.txt
ダウンロード情報をログファイルに保存する
wget -o download.log URL
ダウンロードして別のファイル名で保存する
デフォルトでは、wget は「/」の後の最後の文字をコマンドに使用します。ダイナミック リンク ダウンロードの場合、通常、ファイル名は正しくありません。
- 直接ダウンロードすると、download.aspx?id=1080 として保存されます。
wget http://www.minjieren.com/download.aspx?id=1080
下载并以wordpress.zip名称保存
wget -O wordpress.zip URL
ssh
概要
ssh サービスはデーモンです。システムはバックグラウンドでクライアント接続を監視します。ssh サーバーのプロセスは sshd と呼ばれ、公開キー交換やその他の情報を含むクライアント要求 (IP 22 ポート) をリアルタイムで監視します。
ssh サーバーは 2 つの部分で構成されます。
- openssh (ssh サービスを提供します)
- openssl (暗号化を提供するプログラム)
コマンド形式
ssh [OPTIONS] [-p PORT] [USER@]HOSTNAME [COMMAND]
動作メカニズム
プロセス:
- サーバーが起動すると、キー (768 ビット公開キー) が生成されます。
- ローカル ssh クライアントは ssh サーバーに接続リクエストを送信します。
- サーバーは、接続ポイントのクライアントから送信されたデータと IP アドレスをチェックし、正当であることを確認した後、キー (768 ビット) をクライアントに送信します。
- このとき、クライアントはローカル秘密キー (256 ビット) とサーバーの公開キー (768 ビット) を組み合わせてキー ペア キー (1024 ビット) を作成し、それをサーバーに送り返し、キーを介して接続を確立します。ペアデータ送信。
図: - リモート サーバーはクライアント ユーザー TopGun からログイン要求を受信し、サーバーはその公開キーをユーザーに送信します。
- クライアントは、この公開キーを使用してパスワードを暗号化します。
- クライアントは暗号化されたパスワードをサーバーに送信します。
- リモート サーバーは独自の秘密キーを使用してログイン パスワードを復号化し、その正当性を検証します。
- 結果が検証された場合は、クライアントに対応する応答を返します。
使用
リモートホストにログインするためのユーザー名とポートを指定します
ssh -p3600 [email protected]
コマンド入力後、ユーザーのログインパスワードを入力してログインを完了します。
sshでパスワードレスログインを実現
プロセス
ログイン プロセスは次のとおりです。
プロセス:
- クライアントで ssh-keygen を使用して、キーのペア (公開キー + 秘密キー) を生成します。
- クライアントの公開キーをサーバーのauthorized_keyファイルに追加して、公開キー認証操作を完了します。
- 認証が完了すると、クライアントはサーバーへのログイン要求を開始し、公開キーをサーバーに転送します。
- サーバーは、authorized_key ファイルを取得して、公開キーが存在するかどうかを確認します。公開鍵が存在する場合は、乱数 R を生成し、それを公開鍵で暗号化し、公開鍵暗号化文字列 pubKey® を生成します。
- 公開キーで暗号化された文字列をクライアントに渡します。
- クライアントは秘密キーを使用して公開キーで暗号化された文字列を復号し、R を取得します。
- サーバーとクライアントが通信すると、セッション ID (sessionKey) が生成され、MD5 を使用して R と SessionKey が暗号化され、ダイジェストが生成されます。
- クライアントは、生成された MD5 暗号化文字列をサーバーに渡します。
- サーバーは、MD5(R,SessionKey) 暗号化文字列も生成します。
- クライアントによって送信された暗号化文字列が、サーバー自体によって生成された暗号化文字列と等しい場合、認証は成功します。この時点では、パスワードを入力する必要はなく、接続が確立され、リモートでシェル コマンドの実行を開始できるようになります。
成し遂げる
ステップ 1:ssh-keygen コマンドを使用して、クライアント上で RSA 公開キーと秘密キーを生成し、Enter キーを押して確認します。公開キーと秘密キーのデフォルト名は id_rsa.pub (公開キー) と秘密キー (id_rsa) です默认保存在 ~/.ssh 目录下
。
ssh-keygen -t rsa
2 番目のステップ:クライアントの公開キーをサーバー ~/.ssh/authorized_keys ファイルに追加します。authorized_keys は、クライアントの公開キーを保存するために使用されるファイルです。。 3 つの方法
- ssh-copy-id コマンド経由
- scpコマンド経由
- 手動コピー
使用 ssh-copy-id 命令实现如下
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 3600 [email protected]
ステップ 3: パスワード不要のログインに ssh を使用する
ssh -p3600 [email protected]
scp
概要
scp は Secure Copy の略で、Linux 上でリモートからファイルをコピーするために使用されるコマンドです。
- 同様のコマンドは cp ですが、cp はローカルにコピーするだけで、サーバーをまたがることはできません。
- scp送信は暗号化されています
- また、scp はリソースをほとんど消費せず、システム負荷をあまり増加させず、基本的にシステムの通常の使用には影響を与えません。
コマンド形式:
scp [参数] [原路径] [目标路径]
使用
ローカルサーバーからリモートサーバーへコピー
ファイルをコピーする
# 指定了用户名,命令执行后需要输入用户密码
# 仅指定了远程的目录,文件名字不变
scp local_file remote_username@remote_ip:remote_folder
# 指定了文件名
scp local_file remote_username@remote_ip:remote_file
# 没有指定用户名,命令执行后需要输入用户名和密码
# 仅指定了远程的目录,文件名字不变
scp local_file remote_ip:remote_folder
# 指定了文件名
scp local_file remote_ip:remote_file
ディレクトリをコピーする
# 指定了用户名,命令执行后需要输入用户密码
scp -r local_folder remote_username@remote_ip:remote_folder
# 没有指定用户名,命令执行后需要输入用户名和密码
scp -r local_folder remote_ip:remote_folder
リモートサーバーからローカルサーバーへコピー
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
知らせ
リモート サーバー ファイアウォールが scp コマンドに指定されたポートを設定している場合は、-P パラメーターを使用してコマンドのポート番号を設定する必要があります。コマンドの形式は次のとおりです。
#scp 命令使用端口号 4588
scp -P 4588 [email protected]:/usr/local/sin.sh /home/administrator
使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
しー
概要
sh コマンドは、標準入力から読み取るコマンドまたはファイルから読み取るコマンドを実行するシェル コマンド言語インタープリターです。
構文形式:
sh [参数] 脚本
共通パラメータ
使用
指定されたスクリプトファイルを実行します
[root@xx~]# sh xx.sh
/root
21:33:45 up 42 min, 1 user, load average: 0.06, 0.01, 0.00
指定されたスクリプト ファイルを実行し、コマンドを 1 つずつトレースします。
[root@xx ~]# sh -x xx.sh
+ pwd
/root
+ uptime
21:33:50 up 42 min, 1 user, load average: 0.05, 0.01, 0.00
例: Linux システム上でスクリプトを実行する jar パッケージ シェル
启动: ./xxx.sh start
停止: ./xxx.sh stop
重启: ./xxx.sh restart
#!/bin/bash
############################### 参数区start ########################################
source ./00-set-vars.sh
#指定jdk1.8路径 /home/devSoft/jdk1.8.0_77/bin/java || java
JDK_HOME=$JAVA_HOME
#指定注册中心,多个注册中心,使用逗号分隔
EUREKA_SERVER=$EUREKA_CENTER
#指定jar包名称
JAR_NAME=jar包名称.jar
#指定程序端口号
SERVER_PORT=26069
OTHER_PARAM="指定参数,以--开头,多个参数中间空格,参考: --zuul.routes.web-crud-demo.path=/web-crud-demo/** --zuul.routes.web-crud-demo.url=http://1localhost:8080 --zuul.routes.web-crud-demo.stripPrefix=false --zuul.routes.web-crud-demo.custom-sensitive-headers=true"
############################### 参数区end ##########################################
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $SERVER_PORT-$JAR_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${SERVER_PORT}-${JAR_NAME} is already running. pid=${pid} ."
else
nohup $JDK_HOME -Xms64m -Xmx512m -D$SERVER_PORT-$JAR_NAME -jar $JAR_NAME --server.port=$SERVER_PORT $OTHER_PARAM --eureka.client.serviceUrl.defaultZone=$EUREKA_SERVER >/dev/null 2>&1 &
echo "nohup ${JDK_HOME} -D${SERVER_PORT}-${JAR_NAME} -jar ${JAR_NAME} --server.port=${SERVER_PORT} ${OTHER_PARAM} --eureka.client.serviceUrl.defaultZone=$EUREKA_SERVER >/dev/null 2>&1 & ."
echo "${SERVER_PORT}-${JAR_NAME} start success"
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${SERVER_PORT}-${JAR_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${SERVER_PORT}-${JAR_NAME} is running. Pid is ${pid}"
else
echo "${SERVER_PORT}-${JAR_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac