第一步、查询samba是否安装
[root@localhost ~]# rpm -q samba  
第二步、安装Samba服务
[root@localhost ~]# yum install samba* -y
第三步、修改Samba配置文件
[root@localhost ~]vim /etc/samba/smb.conf
[global]#这部分配置项的内容对整个Samba服务器有效
workgroup = WORKGROUP#和windows的工作组名称一样,一般情况,samba服务的客户端都是windows Xp一类的主机

server string = Linux Samba Server TestServer#服务器描述信息(自定义)
security = user#安全级别:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(由另一台服务器验证用户名及密码)、domain(由Windows域控制器验证用户名及密码)
log file = /var/log/samba/%m.log#设置Samba服务器的日志文件,默认设置为“/var/log/samba/%m.log”,表示日志文件保存到/var/log/samba/目录中,按每个客户机建立一个日志文件,“%m”变量表示客户端主机名或IP地址

hostsallow=192.168.48.1:仅允许地址为192.168.48.1的客户机
hosts deny=:仅拒绝特定的客户机

[linuxsir]#自定义名称的共享目录设置
path = /home/tom#设置对应共享目录为tom家目录;必须保证有该文件
writeable = yes#设置该共享目录是否可写
browseable = no#设置该共享目录在“网上邻居”中是否可见,设置为no时相当于隐藏共享目录
guest ok设置共享目录是否所有人都可以访问,与public配置项作用相同

第四步、启动Samba服务
[root@localhost ~]# service smb start #启动samba服务
第五步、创建用户并设置密码
[root@localhost ~]# useradd jie
[root@localhost ~]# passwd jie
[root@localhost ~]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd  
[root@localhost ~]# smbpasswd jie -a  激活用户
New SMB password:
Retype new SMB password:
Added user jie.

smbpasswd命令的主要选项:
-h:显示smbpasswd命令的帮助信息
-a:添加指定的Samba用户帐号
-d:禁用指定的用户帐号
-e:启用指定的用户帐号
-x:删除指定的用户帐号
不使用任何命令选项时可以用于修改Samba用户的密码

在windows上访问linux文件\\192.168.100.123

进入Linux共享时,不能访问文件并出现“您可能没有权限使用网络资源”
[root@localhost ~]# setenforce 0 暂时停掉SELinux
[root@localhost ~]# setenforce 1 启用SELinux
[root@localhost ~]# setsebool -P samba_enable_home_dirs on

创建10用户user1-user10;
[root@mini ~]#  vim user.sh
#!/bin/bash #注释为bash
for((i=1;i<=10;i++))#条件
do        #动作
  useradd user$i  # 添加用户,$i为变量(i=i+1,一直执行到i<=10)  
  echo "user$i" | passwd --stdin user$i  #打印出来,创建用户密码同用户名一致

  echo "jiejie" | passwd --stdin user10#给用户user10密码为jiejie;
done #完成

[root@mini ~]# vim file.sh
#!/bin/bash
touch file{10..19}#创建10个空文件file10-file19


打印九九乘法表
[root@mini ~]# vim Multiplicationtable.sh
#!/bin/bash
for((i=1;i<=9;i++))#条件语句

   do
     for((j=1;j<=$i;j++))#条件语句
        do
            echo -e -n "$j*$i=$[$i*$j]\t"#显示以行为首
        done
   echo""
   done


[root@mini ~]# vim passwd.sh
#!/bin/bash
read -p "please input your password >" num #交互式
echo "your password $num"
每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中


写一个脚本,使用ping命令探测192.168.0.1-192.168.0.254之间的所有主机的在线状态;
在线的主机使用绿色显示;
#!/bin/bash
ipaddr="192.168.0."
for i in {1..254}
do
   ping -c 1 $ipaddr$i &> /dev/null;
   if [ $? -eq 0 ]
   then
       echo -e "\e[1;32m$ipaddr$i\e[0m"
   else
       echo -e "\e[1;41m$ipaddr$i\e[0m"
   fi
done
echo选项:
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;


read选项

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒)



Bash作为大多数Linux系统的默认Shell,已经可以满足大部分系统关系需求了;Zsh的功能虽然强大,交互式操作也非常方便,但目前来说还不如Bash应用的普遍
管道操作符号“|”
连接左右两个命令,将左侧的命令输出的结果,作为右侧命令的输入(处理对象)
结合不同的引号为变量赋值
双引号 “ ” :允许通过$符号引用其他变量值
单引号 ‘ ’ :禁止引用其他变量值,$视为普通字符
反撇号 ` ` :将命令执行的结果输出给变量
-a或&&:逻辑与,“而且”的意思
 前后两个表达式都成立时整个测试结果才为真,否则为假
-o或||:逻辑或,“或者”的意思

for  变量名  in  取值列表
do
     命令序列
done

使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值,引号内的空格除外)
for语句第一次执行时首先将列表中的第一个取值赋给该变量,然后执行do后边的命令序列
然后再将列表中的第二个取值赋给该变量
然后执行do后边的命令序列
如此循环,直到取值列表中的所有值都已经用完
最后将跳至done语句表示结束循环

while  命令或表达式
 do
            命令列表
 done
首先通过while判断条件测试命令的返回状态值是否为0(条件成立),【注:如果条件写为 true ,则条件始终成立】
如果是,则执行do后边的命令序列,
然后返回到while再次进行条件测试并判断返回状态值,
如果条件仍然成立,则继续执行do后边的命令序列,
然后返回到while重复条件测试……如此循环,直到所测试的条件不成立时,将跳转到done语句表示结束循环

使用if语句的多分支结构,实际上也可以达到相同的效果,但当分支较多时,嵌套的if结构将使脚本的可行性差,不易理解
使用case分支语句结构,则可以使不同的分支情况一目了然
case后边的“变量值”逐一与模式1、模式2……等逐一进行比较,直到找到与之相匹配的值,然后执行该模式下的命令序列,当遇到双分号“;;”后跳转至esac表示结束分支。如果一直找不到相匹配的值,则执行最后一个模式“*)”后的默认命令序列,直到遇到esac后结束分支


crontab任务配置记录中,所设置的命令在“分钟+小时+日期+月份+星期
时间数值的特殊表示方法
*       表示该范围内的任意时间
,    表示间隔的多个不连续时间点
-       表示一个连续的时间范围
/       指定间隔的时间频率

[root@mini ~]# mkdir /stats; touch memory.txt
[root@mini ~]# crontab -e
1 */2 * * * grep -E "^S" /proc/meminfo >> /stats/memory.txt