你可以寫一個shell腳本
基本上,批量添加用戶有兩種方式:
一是用useradd + passwd命令配合腳本來添加;
二是用newusers+chpasswd來添加。
方法一、useradd + passwd命令配合腳本來添加
用戶的初始密碼被設為用戶名+123
#!/bin/bash
#
#.list
#
forusernamein$(moreusers.list)
do
if[-n$username]
then
useradd-m$username
echo
echo$username"123"|passwd--stdin$username
echo
echo"User$username'spasswordischanger!"
else
echo"Theusernameisnull!"
fi
done
~
其中users.list文件內容如下:
johnson
lily
kelly
方法二、newusers+chpasswd批量添加用戶
1、首先我們創建用戶文件和密碼文件;
我們要創建包含新用戶的文件userfile.txt ;另一個是為新添加的用戶設置密碼的userpwdfile.txt;
[root@localhost ~]# touch userfile.txt
[root@localhost ~]# touch userpwdfile.txt
然後用文本編輯器打開文件userfile.txt,添加如下內容;
win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
win02:x:522:522::/home/win02:/sbin/nologin
win03:x:523:523::/home/win03:/sbin/nologin
win04:x:524:524::/home/win04:/sbin/nologin
win05:x:525:525::/home/win05:/sbin/nologin
win06:x:526:526::/home/win06:/sbin/nologin
win07:x:527:527::/home/win07:/sbin/nologin
win08:x:528:528::/home/win08:/sbin/nologin
win09:x:529:529::/home/win09:/sbin/nologin
userfile.txt 文件內容格式和 /etc/passwd 的格式是一樣的,必須嚴格按照/etc/passwd 的格式來書寫;上面所添加的用戶都不能登錄系統,但完全能用於ftp登錄,但您得在相應ftp伺服器的配置文件中打開讓本地用戶有讀寫許可權;如果您想讓上 面的部份用戶可以登錄系統,可以把SHELL類似改一改,比如改成/bin/bash ;
我們再來書寫新增用戶的密碼文件userpwdfile.txt內容;這個文件的內容中的用戶名要與 userfile.txt用戶名相同且嚴格按照「用戶名:密碼」的格式來寫,一個用戶一行;也就是說我們先是添加了win00到win09的用戶,現在要為這些用戶更新密碼;比如下面的;
win00:123456
win01:654321
win02:123321
win03:qweewq
win04:google
win05:adadwc
win06:wsscee
win07:xxec32
win08:543wew
win09:3ce3wf
2、用newusers批量添加用戶,此時用戶是沒有密碼的
[root@localhost ~]# newusers userfile.txt
2、執行命令/usr/sbin/pwunconv,將/etc/shadow產生的shadow密碼解碼,然後回寫到/etc/passwd中, 並將/etc/shadow的shadow密碼欄刪掉。這是為了方便下一步的密碼轉換工作,即先取消shadow password功能,關閉影子文件。
[root@localhost ~]#pwunconv
3、 用chpasswd批量修改密碼
[root@localhost ~]# chpasswd < userpwdfile.txt
4、最後不要忘了恢復影子文件,保證安全,您可以通過下面的命令來映射到 /etc/shadow文件名
[root@localhost ~]# pwconv
Ⅱ 如何在linux下安裝mysql
1、到mysql官網下載mysql編譯好的二進制安裝包,在下載頁面SelectPlatform:選項選擇linux-generic,然後把頁面拉到底部,
64位系統下載Linux-Generic(glibc2.5)(x86,64-bit),32位系統下載Linux-Generic(glibc2.5)(x86,32-bit)
2、解壓32位安裝包:
進入安裝包所在目錄,執行命令:tarmysql-5.6.17-linux-glibc2.5-i686.tar.gz
3、復制解壓後的mysql目錄到系統的本地軟體目錄:
執行命令:cpmysql-5.6.17-linux-glibc2.5-i686/usr/local/mysql-r
4、添加系統mysql組和mysql用戶:
執行命令:groupaddmysql和useradd-r-gmysqlmysql
5、安裝資料庫:
進入安裝mysql軟體目錄:執行命令cd/usr/local/mysql
修改當前目錄擁有者為mysql用戶:執行命令?chown-Rmysql:mysql./
安裝資料庫:執行命令?./scripts/mysql_install_db--user=mysql
修改當前目錄擁有者為root用戶:執行命令?chown-Rroot:root./
修改當前data目錄擁有者為mysql用戶:執行命令?chown-Rmysql:mysqldata
到此資料庫安裝完畢
6、啟動mysql服務和添加開機啟動mysql服務:
添加開機啟動:執行命令cpsupport-files/mysql.server/etc/init.d/mysql,把啟動腳本放到開機初始化目錄
啟動mysql服務:執行命令servicemysqlstart
執行命令:ps-ef|grepmysql看到mysql服務說明啟動成功
7、修改mysql的root用戶密碼,root初始密碼為空的:
執行命令:./bin/mysqladmin-urootpassword'密碼'
8、把mysql客戶端放到默認路徑:
ln-s/usr/local/mysql/bin/mysql/usr/local/bin/mysql
注意:建議使用軟鏈過去,不要直接包文件復制,便於系統安裝多個版本的mysql
Ⅲ Linux命令行生成隨機密碼的方法有哪些
生成一個隨機密碼
對於下面的任何一種方法,你可以通過簡單的修改來生成特定長度的密碼,或者只使用其輸出結果的前N位。希望你正在使用一些類似於LastPass的密碼管理器,這樣你就不用自己記住這些隨機生成的密碼了。
1. 這種方法使用SHA演算法來加密日期,並輸出結果的前32個字元:
Shell
1
date +%s | sha256sum | base64 | head -c 32 ; echo
2. 這種方法使用內嵌的/dev/urandom,並過濾掉那些日常不怎麼使用的字元。這里也只輸出結果的前32個字元:
Shell
1
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
3. 這種方法使用openssl的隨機函數。如果你的系統也許沒有安裝openssl,你可以嘗試其它九種方法或自己安裝openssl。
Shell
1
openssl rand -base64 32
4. 這種方法類似於之前的urandom,但它是反向工作的。Bash的功能是非常強大的!
1
tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
5. 這種方法使用string命令,它從一個文件中輸出可列印的字元串:
Shell
1
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
6. 這是使用urandom的一個更簡單的版本:
Shell
1
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
7. 這種方法使用非常有用的dd命令:
Shell
1
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
8. 你甚至可以生成一個只用左手便可以輸入的密碼:
Shell
1
</dev/urandom tr -dc '12345!@#$%' | head -c8; echo ""
9. 如果每次都使用上述某種方法,那更好的辦法是將它保存為函數。如果這樣做了,那麼在首次運行命令之後,你便可以在任何時間只使用randpw就可以生成隨機密碼。或許你可以把它保存到你的~/.bashrc文件裡面。
Shell
1
randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
10. 最後這種生成隨機密碼的方法是最簡單的。它同樣也可以在安裝了Cygwin的Windows下面運行。在Mac OS X下或許也可以運行。我敢肯定會有人抱怨這種方法生成的密碼沒有其它方法來的隨機。但實際上如果你使用它生成的全部字元串作為密碼,那這個密碼就足夠隨機了。
Shell
1
date | md5sum
是的,這種方法也極其好記。
Ⅳ Linux shell常用命令
Linux shell常用命令匯總
對於經常使用linux系統的博主來說,基本常用的shell命令是少不了的,下面為大家總結了Linux shell的常用命令,希望對大家有所幫助!
1.檢查遠程埠是否對bash開放:
echo >/dev/tcp/8.8.8.8/53 && echo "open"
2.讓進程轉入後台:
Ctrl + z
3、將進程轉到前台:
fg
4.產生隨機的十六進制數,其中n是字元數:
openssl rand -hex n
5.在當前shell里執行一個文件里的命令:
source /home/user/file.name
6.截取前5個字元:
${variable:0:5}
7.SSH debug 模式:
ssh -vvv user@ip_address
8.SSH with pem key:
ssh user@ip_address -i key.pem
9.用wget抓取完整的網站目錄結構,存放到本地目錄中:
wget -r --no-parent --reject "index.html*" http://hostname/ -P /home/user/dirs
10.一次創建多個目錄:
mkdir -p /home/user/{test,test1,test2}
11.列出包括子進程的進程樹:
ps axwef
12.創建 war 文件:
jar -cvf name.war file
13.測試硬碟寫入速度:
dd if=/dev/zero of=/tmp/output.img bs=8k count=256k; rm -rf /tmp/output.img
14.測試硬碟讀取速度:
hdparm -Tt /dev/sda
15.獲取文本的md5 hash:
echo -n "text" | md5sum
16.檢查xml格式:
xmllint --noout file.xml
17.將tar.gz提取到新目錄里:
tar zxvf package.tar.gz -C new_dir
18.使用curl獲取HTTP頭信息:
curl -I http://www.example.com
19.修改文件或目錄的時間戳(YYMMDDhhmm):
touch -t 0712250000 file
20.用wget命令執行ftp下載:
wget -m ftp://username:password@hostname
21.生成隨機密碼(例子里是16個字元長):
LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;
22.快速備份一個文件:
cp some_file_name{,.bkp}
23.訪問Windows共享目錄:
smbclient -U "DOMAIN\user" //dc.domain.com/share/test/dir
24.執行歷史記錄里的命令(這里是第100行):
!100
25.解壓:
unzip package_name.zip -d dir_name
26.輸入多行文字(CTRL + d 退出):
cat > test.txt
27.創建空文件或清空一個現有文件:
\> test.txt
28.與Ubuntu NTP server同步時間:
ntpdate ntp.ubuntu.com
29.用netstat顯示所有tcp4監聽埠:
netstat -lnt4 | awk '{print $4}' | cut -f2 -d: | grep -o '[0-9]*'
30.qcow2鏡像文件轉換:
qemu-img convert -f qcow2 -O raw precise-server-cloudimg-amd64-disk1.img \precise-server-cloudimg-amd64-disk1.raw
31.重復運行文件,顯示其輸出(預設是2秒一次):
watch ps -ef
32.所有用戶列表:
getent passwd
33.Mount root in read/write mode:
mount -o remount,rw /
34.掛載一個目錄(這是不能使用鏈接的情況):
mount --bind /source /destination
35.動態更新DNS server:
nsupdate < <eof p=""> </eof>
update add $HOST 86400 A $IP
send
EOF
36.遞歸grep所有目錄:
grep -r "some_text" /path/to/dir
37.列出前10個最大的文件:
lsof / | awk '{ if($7 > 1048576) print $7/1048576 "MB "$9 }' | sort -n -u | tail
39.打開Vim並跳到文件末:
vim + some_file_name
40.Git 克隆指定分支(master):
git clone [email protected]:name/app.git -b master
41.Git 切換到其它分支(develop):
git checkout develop
42.Git 刪除分支(myfeature):
git branch -d myfeature
43.Git 刪除遠程分支
git push origin :branchName
44.Git 將新分支推送到遠程伺服器:
git push -u origin mynewfeature
45.列印歷史記錄中最後一次cat命令:
!cat:p
46.運行歷史記錄里最後一次cat命令:
!cat
47.找出/home/user下所有空子目錄:
echo >/dev/tcp/8.8.8.8/53 && echo "open"
1.檢查遠程埠是否對bash開放:
find /home/user -maxdepth 1 -type d -empty
48.獲取test.txt文件中第50-60行內容:
< test.txt sed -n '50,60p'
49.運行最後一個命令(如果最後一個命令是mkdir /root/test, 下面將會運行: sudo mkdir /root/test):
sudo !!
50.創建臨時RAM文件系統 – ramdisk (先創建/tmpram目錄):
mount -t tmpfs tmpfs /tmpram -o size=512m
51.Grep whole words:
grep -w "name" test.txt
52.在需要提升許可權的.情況下往一個文件里追加文本:
echo "some text" | sudo tee -a /path/file
53.列出所有kill signal參數:
kill -l
54.在bash歷史記錄里禁止記錄最後一次會話:
kill -9 $$
55.掃描網路尋找開放的埠:
nmap -p 8081 172.20.0.0/16
56.設置git email:
git config --global user.email "[email protected]"
57.To sync with master if you have unpublished commits:
git pull --rebase origin master
58.將所有文件名中含有”txt”的文件移入/home/user目錄:
find -iname "*txt*" -exec mv -v {} /home/user \;
59.將文件按行並列顯示:
paste test.txt test1.txt
60.shell里的進度條:
pv data.log
61.使用netcat將數據發送到Graphite server:
echo "hosts.sampleHost 10 `date +%s`" | nc 192.168.200.2 3000
62.將tabs轉換成空格:
expand test.txt > test1.txt
63.Skip bash history:
< space >cmd
64.去之前的工作目錄:
cd -
65.拆分大體積的tar.gz文件(每個100MB),然後合並回去:
split –b 100m /path/to/large/archive /path/to/output/files
cat files* > archive
66.使用curl獲取HTTP status code:
curl -sL -w "%{http_code}\\n" www.example.com -o /dev/null
67.設置root密碼,強化MySQL安全安裝:
/usr/bin/mysql_secure_installation
68.當Ctrl + c不好使時:
Ctrl + \
69.獲取文件owner:
stat -c %U file.txt
70.block設備列表:
lsblk -f
71.找出文件名結尾有空格的文件:
find . -type f -exec egrep -l " +$" {} \;
72.找出文件名有tab縮進符的文件
find . -type f -exec egrep -l $'\t' {} \;
73.用”=”列印出橫線:全選復制放進筆記
printf '%100s\n' | tr ' ' = ;