Web開発者の仕事に役立つ小さなこと、または「どうしてそれなしで生きることができるか」

邪悪なトロイの木馬がHabrのアカウントを盗み、その後、いくつかの愚かな漫画が私のアカウントで公開され始めました。 残念ながら、UFOが読み取り専用になったときに初めてこのことを知り、評価がマイナスになりました。 関係ありません。長い間行ってきた投稿を最終的に書く理由です。



Web開発者はコンソールを必要としますが、すべてを落として厚いLinuxの本を読み始めるほどではありません。 それが私がケースからケースへとコンソールのトリックを学んだ理由であり、従業員から判断すると、多くの人が同じことをしています。 便利な秘密をいくつか明らかにします。



1)sshキーを使用、ルーク!



私は長い間キーを発見しましたが、人々は定期的に新しい人のために会います。 sshキーを使用すると、接続を一度設定するだけで、すべてのサイトのパスワードを「メモ帳」に保存する必要がなくなります

$ ssh-keygen -t dsa







標準のキーの場所/home/user/data/.ssh/id_dsaに同意します。

パスフレーズを入力します(または入力しません)。 入力する方が良いです。システムはログインからログアウトまでパスワードを記憶します。つまり、このパスワードを常に入力する必要はありません。 しかし、セキュリティは一桁向上します。

その後、2つのファイル、〜/ .ssh / id_dsaおよび〜/ .ssh / id_dsa.pubを取得します。

1つ目は個人(プライベート)キーです-USBフラッシュドライブにコピーして、予備として非表示にすることをお勧めします。 2つ目は公開キーであり、すべてのサーバーに報告します。



キーをサーバーに転送する最も簡単な方法は、コンソールで次のコマンドを実行することです。

$ ssh user@hostname "umask 077; cat >> .ssh/authorized_keys" < ~/.ssh/id_dsa.pub







そして最後に、リモートコンピューターのSSHのパスワードを入力します



2)ssh configsを使用、ルーク!



すべて正常に機能しますが、毎回長いログイン名とホスト名を入力する必要があります。 最適化する必要があります!

ファイル〜/ .ssh / configを編集して、次を追加します。

Host host

User user

Hostname hostname







〜/ .ssh / configファイルの権利を確認します。彼らが私たち以外の誰かへの書き込みを許可している場合は、他の人に変更します。

$ chmod 644 ~/.ssh/config







接続したいコンピューターがnatの背後にあるとしましょう。 SSHを介して1つのサーバーにログインし、それから目的のコンピューターに移動する必要があります。 これを1日に何度も行う必要がある場合、非常に、すぐに退屈します。

configに新しいルールを書きます:

Host computer.hostname

Hostname 192.168.1.10

User user

ProxyCommand ssh hostname nc %h %p







以上です! これでssh computer.hostnameを記述できます。ユーザーは自動的にセットアップされ、目的のコンピューターとの接続が直接確立されます。 主なことは、彼を忘れないこと、彼の公開鍵を置くことです。

さらに、2つの便利なディレクティブについて説明します。

LocalForward localhost:8080 192.168.10.10:80 # , SSH.

Port 8022 # SSH , .







3)自動補完機能



毎回4つのホスト文字を入力しますか? これはうんざりです! 原則として、オートコンプリートはssh-configファイルを解析します。ホスト名を自動的に追加するには、ホスト名の書き込みを開始してタブをクリックするだけで十分です。 これが起こらない場合は、このbashを教える必要があります。

行を追加する

complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh







〜/ .bash_profile



そこに次のコードを追加できます。

function __mysql_list_all_opts {

local i IFS=$'\n'

mysql --help|egrep '^ -'|awk '{print $1 "\n" $2}'|egrep '^-'|sed s/,$//|sort

}



__mysql_all_opts=

function __mysql_compute_all_opts {

: ${__mysql_all_opts:=$(__mysql_list_all_opts)}

}



function _mysql_complete {

local cur prev opts



COMPREPLY=()

cur=`_get_cword`

prev=${COMP_WORDS[COMP_CWORD-1]}



case $prev in

*)

if [[ "$cur" == -* ]]; then

__mysql_compute_all_opts

opts=${__mysql_all_opts}

else

opts=$(mysql -uroot -s -e 'show databases')

fi

;;

esac



COMP_WORDBREAKS=${COMP_WORDBREAKS//:}

COMPREPLY=( $(compgen -W "$opts" -- $cur) )

}



complete -F _mysql_complete mysql







同じ方法でmysqldumpを登録できます。



新しいbashコンソールを開くと、コンソールはリモートコンピューターの名前とローカルデータベースの名前を補完します。

データベースに接続するためのパスワードがある場合は、次の手順を実行する必要があります。

4)コンソールマッスルのパスワードを入力しないでください



mysqlまたはmysqldumpコンソールクライアントを起動するたびに、忘れずにユーザー名とパスワードを渡す必要があります。 これを回避するには、次の内容の〜/ .my.cnfファイルを一度作成するだけで十分です。

[client]

user = 'root'

password = 'password'



[mysql]

pager = less -iMSx4 -FX







必要に応じてmysqldセクションを追加します。 コマンドラインからデータベースを操作するときに、制限の最適な選択について心配する必要はありません。 出力が画面上の行数より長い場合、出力は自動的にlessコマンドに送信されます。 その上で、便利に垂直および水平にナビゲートしたり、検索を行うこともできます!



5)結果:



リモートサーバーからデータベースダンプを取得するには、前に一連のコマンドを実行する必要がありました。 最悪の場合(例は実際のイベントに基づいています):

localhost $ ssh -P 8022 user@hostname #

hostname $ ssh user2@computer #

computer $ mysqldump -u root -p password long_database_name > ~/filename.sql

computer $ exit

hostname $ scp user2@computer:~/filename.sql ~/filename.sql

hostname $ ssh user2@computer

computer $ rm ~/filename.sql

computer $ exit

hostname $ exit

localhost $ scp -P 8022 user@hostname:~/filename.sql ~/filename.sql

localhost $ ssh -P 8022 user@hostname

hostname $ rm ~/filename.sql

hostname $ exit

localhost $ cat ~/filename.sql | mysql -u root -p password long_database_name

localhost $ rm ~/filename.sql # ,







さて、このすべての恐怖の代わりに、 1つのコマンドを実行するだけです:

$ ssh computer mysqldump long_database_name | mysql long_database_name







実際には、各チームの前にタブを押すことができるため、さらに少なくなります。

ssh com [タブ] mysqldu [タブ] lon [タブ] | mys [タブ] lon [タブ]



解凍したファイルを送信する必要はありませんか? それは重要ではありません、私たちは反対側からジッパーにオンザフライで梱包し、この側から解凍します。

$ ssh computer 'mysqldump long_database_name | gzip' | gunzip | mysql longdatabase_name







追加のバンとして、彼らはファイルをdorgに再保存することなく、natの背後にあるリモートコンピューターから自分自身に直接ダウンロードする機会を得ました。

$ scp computer:~/test.txt ~/









トピックがコミュニティにとって興味深いと思われる場合は、続けます。

ポピーの下でiTermを設定する方法について話すことができるので、sshで作業するのが非常に便利です。

コマンドラインで作業するときにbashスクリプトを使用すると時間を大幅に節約できる方法について

screenコマンドの長所と便利な設定方法について

また、忘れられた祖父のZモデムと、それが日常生活で現代の開発者をどのように助けることができるかについても。



All Articles