Linux コマンド: wget (ファイルのダウンロード)、ssh (ログインおよびパスワードなしのログイン)、scp (リモート ファイル転送)、sh (スクリプト)

ウィゲット

概要

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 つの部分で構成されます。

  1. openssh (ssh サービスを提供します)
  2. openssl (暗号化を提供するプログラム)

コマンド形式

ssh [OPTIONS] [-p PORT] [USER@]HOSTNAME [COMMAND]

動作メカニズム

プロセス:

  1. サーバーが起動すると、キー (768 ビット公開キー) が生成されます。
  2. ローカル ssh クライアントは ssh サーバーに接続リクエストを送信します。
  3. サーバーは、接続ポイントのクライアントから送信されたデータと IP アドレスをチェックし、正当であることを確認した後、キー (768 ビット) をクライアントに送信します。
  4. このとき、クライアントはローカル秘密キー (256 ビット) とサーバーの公開キー (768 ビット) を組み合わせてキー ペア キー (1024 ビット) を作成し、それをサーバーに送り返し、キーを介して接続を確立します。ペアデータ送信。
    ここに画像の説明を挿入します
    図:
  5. リモート サーバーはクライアント ユーザー TopGun からログイン要求を受信し、サーバーはその公開キーをユーザーに送信します。
  6. クライアントは、この公開キーを使用してパスワードを暗号化します。
  7. クライアントは暗号化されたパスワードをサーバーに送信します。
  8. リモート サーバーは独自の秘密キーを使用してログイン パスワードを復号化し、その正当性を検証します。
  9. 結果が検証された場合は、クライアントに対応する応答を返します。

使用

リモートホストにログインするためのユーザー名とポートを指定します

ssh -p3600 [email protected]

コマンド入力後、ユーザーのログインパスワードを入力してログインを完了します。

sshでパスワードレスログインを実現

プロセス

ログイン プロセスは次のとおりです。
ここに画像の説明を挿入します
プロセス:

  1. クライアントで ssh-keygen を使用して、キーのペア (公開キー + 秘密キー) を生成します。
  2. クライアントの公開キーをサーバーのauthorized_keyファイルに追加して、公開キー認証操作を完了します。
  3. 認証が完了すると、クライアントはサーバーへのログイン要求を開始し、公開キーをサーバーに転送します。
  4. サーバーは、authorized_key ファイルを取得して、公開キーが存在するかどうかを確認します。公開鍵が存在する場合は、乱数 R を生成し、それを公開鍵で暗号化し、公開鍵暗号化文字列 pubKey® を生成します。
  5. 公開キーで暗号化された文字列をクライアントに渡します。
  6. クライアントは秘密キーを使用して公開キーで暗号化された文字列を復号し、R を取得します。
  7. サーバーとクライアントが通信すると、セッション ID (sessionKey) が生成され、MD5 を使用して R と SessionKey が暗号化され、ダイジェストが生成されます。
  8. クライアントは、生成された MD5 暗号化文字列をサーバーに渡します。
  9. サーバーは、MD5(R,SessionKey) 暗号化文字列も生成します。
  10. クライアントによって送信された暗号化文字列が、サーバー自体によって生成された暗号化文字列と等しい場合、認証は成功します。この時点では、パスワードを入力する必要はなく、接続が確立され、リモートでシェル コマンドの実行を開始できるようになります。
成し遂げる

ステップ 1:ssh-keygen コマンドを使用して、クライアント上で RSA 公開キーと秘密キーを生成し、Enter キーを押して確認します。公開キーと秘密キーのデフォルト名は id_rsa.pub (公開キー) と秘密キー (id_rsa) です默认保存在 ~/.ssh 目录下

ssh-keygen -t rsa

2 番目のステップ:クライアントの公開キーをサーバー ~/.ssh/authorized_keys ファイルに追加します。authorized_keys は、クライアントの公開キーを保存するために使用されるファイルです。。 3 つの方法

  1. ssh-copy-id コマンド経由
  2. scpコマンド経由
  3. 手動コピー

使用 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 上でリモートからファイルをコピーするために使用されるコマンドです。

  1. 同様のコマンドは cp ですが、cp はローカルにコピーするだけで、サーバーをまたがることはできません。
  2. scp送信は暗号化されています
  3. また、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

おすすめ

転載: blog.csdn.net/yyuggjggg/article/details/128585566
おすすめ