BASH IP 地址标签
BASH label for IP addresses
我的错:我一直忙于学习其他 linux 东西而完全忽略了 bash 的力量。
我有许多系统可以远程访问以进行非常简单的操作。问题是我需要记住每个 IP 地址。他们很多。
在 ~./bashrc 中使用别名是一个选项:
alias ssh_customer1='ssh root@10.X.X.X'
alias ssh_customer2='ssh root@10.X.X.Y'
alias copy_customer1='scp * root@10.X.X.X:/etc/example/'
alias copy_customer2='scp * root@10.X.X.Y:/etc/example/'
alias get_customer1='scp root@10.X.X.X:/etc/example/* .'
alias get_customer2='scp root@10.X.X.Y:/etc/example/* .'
但灵活性很小。
另一种可能性是使用系统名称作为参数来定义函数,但我不喜欢这样:
sshx('customer1')
scpx('customer2')
我宁愿直接用相应的IP地址替换一个标签而不需要记住它,并使用标准命令:
ssh root@ip_customer1
scp root@ip_customer2:/etc/example/* .
这可能吗?
设置一个~/.ssh/config
文件:
$ cat ~/.ssh/config
Host cust1
HostName 10.X.X.X
User root
Host cust2
HostName 10.X.X.Y
User root
现在您可以使用:
ssh cust1
另一件很棒的事情是您现在可以将身份文件附加到每个服务器:
$ cat ~/.ssh/config
Host cust1
HostName 10.X.X.X
User root
IdentityFile ~/.ssh/cust1.id_rsa
Host cust2
HostName 10.X.X.Y
User root
IdentityFile ~/.ssh/cust2.id_rsa
这将允许您在没有密码的情况下使用 ssh 和 scp,假设密钥没有密码或使用了 ssh-agent。
我的错:我一直忙于学习其他 linux 东西而完全忽略了 bash 的力量。
我有许多系统可以远程访问以进行非常简单的操作。问题是我需要记住每个 IP 地址。他们很多。
在 ~./bashrc 中使用别名是一个选项:
alias ssh_customer1='ssh root@10.X.X.X'
alias ssh_customer2='ssh root@10.X.X.Y'
alias copy_customer1='scp * root@10.X.X.X:/etc/example/'
alias copy_customer2='scp * root@10.X.X.Y:/etc/example/'
alias get_customer1='scp root@10.X.X.X:/etc/example/* .'
alias get_customer2='scp root@10.X.X.Y:/etc/example/* .'
但灵活性很小。
另一种可能性是使用系统名称作为参数来定义函数,但我不喜欢这样:
sshx('customer1')
scpx('customer2')
我宁愿直接用相应的IP地址替换一个标签而不需要记住它,并使用标准命令:
ssh root@ip_customer1
scp root@ip_customer2:/etc/example/* .
这可能吗?
设置一个~/.ssh/config
文件:
$ cat ~/.ssh/config
Host cust1
HostName 10.X.X.X
User root
Host cust2
HostName 10.X.X.Y
User root
现在您可以使用:
ssh cust1
另一件很棒的事情是您现在可以将身份文件附加到每个服务器:
$ cat ~/.ssh/config
Host cust1
HostName 10.X.X.X
User root
IdentityFile ~/.ssh/cust1.id_rsa
Host cust2
HostName 10.X.X.Y
User root
IdentityFile ~/.ssh/cust2.id_rsa
这将允许您在没有密码的情况下使用 ssh 和 scp,假设密钥没有密码或使用了 ssh-agent。