查找可执行文件

当从命令行中运行一个程序的时候,Linux系统会搜索一系列目录来查找对应的文件。这些目录被定义在环境变量PATH中。如果你想找出系统中有哪些可执行文件可供使用,只需要扫描PATH环境变量中所有的目录就行了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash 
# finding files in the PATH
# 首先是创建一个for循环,对环境变量PATH中的目录进行迭代。处理的时候别忘了设置IFS分隔符。
IFS=:
for folder in $PATH
do
echo "$folder:"
#以使用另一个for循环来迭代特定目录中的所有文件
for file in $folder/*
do
#检查各个文件是否具有可执行权限
if [ -x $file ]
then
echo " $file"
fi
done
done

运行这段代码时,会得到一个可以在命令行中使用的可执行文件的列表。

输出显示了在环境变量PATH所包含的所有目录中找到的全部可执行文件

创建多个用户目录

不用为每个需要创建的新用户账户手动输入useradd命令,而是可以将需要添加的新用户账户放在一个文本文件中,然后创建一个简单的脚本进行处理。文本文件的格式如下:

1
2
3
4
5
6
userid,user name

rich,Richard Blum
christine,Christine Bresnahan
barbara,Barbara Blum
tim,Timothy Bresnahan

第一个条目是你为新用户账户所选用的用户ID。第二个条目是用户的全名。两个值之间使用逗号分隔,这样就形成了一种名为逗号分隔值的文件格式这种文件格式在电子表格中极其常见,所以你可以轻松地在电子表格程序中创建用户账户列表,然后将其保存成.csv格式,以备shell脚本读取及处理。

1
2
3
4
5
6
7
8
9
10
#!/bin/bash 
# process new user accounts
input="users.csv"
#我们将IFS分隔符设置成逗号,并将其放入while语句的条件测试部分。然后使用read命令读取文件中的各行。
while IFS=',' read -r userid name
do
echo "adding $userid"
useradd -c "$name" -m $userid
#把数据从文件中送入while命令,只需在while命令尾部使用一个重定向符
done < "$input"

免密登陆

  1. root用户进入home目录,确实有无隐藏文件夹 .ssh
1
2
cd ~
ls -lrta
  1. 有,则跳过本步骤;没有,执行如下命令
1
2
##根据提示输入当前用户密码
ssh localhost

输入密码生成 .ssh文件夹

1
2
3
4
5
6
##登录成功后,再次退出
exit

##进入home目录查看 .ssh
cd ~
ls -lrta
  1. 成功生成 .ssh目录后,执行如下命令
1
2
3
4
##进入目录
cd .ssh
##生成秘钥,ssh-keygen用于生成秘钥,-t 指定秘钥类型为 rsa秘钥(一路回车即可)
ssh-keygen -t rsa
  1. 使用同一份rsa 公私钥

追加公钥到授权文件中

1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

拷贝整个.ssh文件夹到其它服务器

1
2
scp -r .ssh root@192.168.50.16:~/
scp -r .ssh root@192.168.50.17:~/