useradd ทำงานได้แบบโต้ตอบ แต่ไม่ใช่สคริปต์ทุบตี


1

ฉันกำลังพยายามสร้างบัญชีผู้ใช้โดยอัตโนมัติ

คำสั่งในสคริปต์นี้ทำงานได้ดีใน bash shell อย่างไรก็ตามเมื่อฉันรัน bash script มันจะล้มเหลวและฉันได้รับ 2 ซึ่งหมายถึง invalid command syntax ตามหน้า man useradd

สคริปต์นี้ยังพิมพ์คำสั่งก่อนที่จะดำเนินการดังนั้นถ้าฉันเพียงคัดลอก / วางผลลัพธ์ "cmd-->" ), มันได้ผล.

เช่น., cmd-->useradd bidwbre -m -c "Brent Bidwel" -G students นี่คือสคริปต์สั้น ๆ :

#!/bin/bash

while read id fn ln pw
do
     echo "cmd-->useradd $id -m -c \"$fn $ln\" -G students"
     useradd $id -m -c \"$fn $ln\" -G students
     echo $?

    # chmod go-rx /home/$id
    # echo "$id:$pw" | chpasswd
    echo ""
done

ฉันกำลังใช้งานการเข้าสู่ระบบในฐานะ root นี่คือสิทธิ์ของไฟล์

-rwxr-x---. 1 root root 1339 Aug 2 14:58 rh_make_accts.sh*

สิ่งที่ฉันหายไปที่นี่?

Red Hat 7.3 Enterprise Linux

PS: ค่อนข้างไม่เกี่ยวข้อง แต่เนื่องจากฉันถามไปแล้ว: อะไรคือช่วงเวลาที่ตามมาในรายการไดเร็กตอรี่แบบยาวเมื่อสิ้นสุดสิทธิ์ ไม่ใช่สิ่งที่ฉันเคยเห็นมาก่อนเฉพาะกับ RH

คำตอบ:


1

ลบแบ็กสแลชสองอันบน useradd บรรทัดหรือกล่าวอีกนัยหนึ่งอย่าหลีกเลี่ยงคำพูด

useradd $id -m -c "$fn $ln" -G students

PS: จุด

Coreutils ของ GNU: ข้อมูลอะไรที่ระบุไว้

-l, - รูปแบบ = ยาว - รูปแบบ = verbose

...

การติดตามบิตโหมดไฟล์เป็นอักขระเดียวที่ระบุ   ไม่ว่าจะเป็นวิธีการเข้าถึงทางเลือกเช่นรายการควบคุมการเข้าถึง   นำไปใช้กับไฟล์ เมื่อตัวละครดังต่อไปนี้บิตโหมดไฟล์   เป็นช่องว่างไม่มีวิธีการเข้าถึงอื่น เมื่อมีการพิมพ์   ตัวละครแล้วมีวิธีการดังกล่าว

GNU ls ใช้อักขระ ‘.’ เพื่อระบุไฟล์ที่มีความปลอดภัย   บริบท แต่ไม่มีวิธีการเข้าถึงอื่น ๆ

ไฟล์ที่มีการรวมกันของวิธีการเข้าถึงอื่น ๆ คือ   ทำเครื่องหมายด้วยอักขระ ‘+’


ขอบคุณ .. เพิ่งค้นพบว่าฉันไม่ต้องการแบ็กสแลชในเครื่องหมายคำพูด .. แปลก ๆ ที่สคริปต์นี้ทำงานอย่างสมบูรณ์แบบภายใต้ Ubuntu (ดีกว่าผู้ใช้ vs ผู้ใช้เพิ่ม) สำหรับปี ขอบคุณสำหรับ . คำอธิบาย (ไม่สามารถตอบคำตอบได้อีก 5 นาที ... )
Levon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.