作者jubel (木亟缶夬金戋)
看板LinuxDev
标题[问题] 用sh读一个文字档会有错误
时间Wed Apr 13 10:08:13 2016
帮朋友发问的
我用sh读一个文字档的内容,里面是e-mail帐号,然後用
passwd去停用e-mail的登入密码,以下程式会有error,该如何修改?
#!/bin/bash
filename="/var/www/html/lock_mail"
exec < $filename
while read var
do
sudo passwd -l $var
done
sudo passwd -l testjen
sudo passwd -l testjen1
sudo passwd -l testjen2
错误讯息如下:
'.sswd: Unknown user name 'testjen
'.sswd: Unknown user name 'testjen1
'.sswd: Unknown user name 'testjen2
Locking password for user testjen.
passwd: Success
Locking password for user testjen1.
passwd: Success
Locking password for user testjen2.
passwd: Success
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.254.69.139
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1460513297.A.B85.html
1F:→ kerwinhui: 用bash就不要用sh呼叫… 04/13 10:36
2F:→ kerwinhui: 另外,有手动改过 /etc/shadow 或 /etc/passwd 吗? 04/13 10:37
直接下 sudo passwd -l testjen 是ok的,但带变数去改,就会有error
#!/bin/bash
filename="/var/www/html/lock_mail"
exec < $filename
while read var
do
sudo passwd -l $var #执行error,确定有testjen这帐号
sudo passwd -l testjen #执行正常
done
3F:→ kerwinhui: 如果是用 sudo -- "password -l $var" 呢? 04/13 13:01
4F:→ kerwinhui: passwd 不是 password 04/13 13:02
5F:推 yvb: 猜测输入档为DOS格式. while前加一列 IFS=$' \t\r\n' 试试. 04/13 15:02
输入档为linux格式
不过加了这行就能用了
谢谢
※ 编辑: jubel (111.254.69.139), 04/13/2016 15:07:53
6F:推 yvb: 请先 file 一下该档, CRLF 换行是DOS格式, CR换行是MAC格式. 04/13 15:10