zoukankan      html  css  js  c++  java
  • Linux系统命令(不定时更新)

    1. su

    编辑bash时,遇到过此类问题:

    #!/bin/bash
    sudo echo 'abc' > /etc/test
    

    尽管使用了sudo权限,但脚本执行时仍然会报无权限写入/etc/目录。原因在于sudo的权限只提供给了command_1: sudo echo abc ,而真正需要使用的是 command_2: > /etc/test 。故需要做如下调整:

    su [-root] -c "echo 'abc' > /etc/test"
    

    su 用于让用户在登录期间变成另外一个用户。后边不带 username 使用时,su 默认会变成超级用户。可选的选项 - (对,就单独一个 - ,完整写法是 -l--login ),可以用于提供一个类似于用户直接登录的环境,用户可能期望是这样的。

    1.1. su命令中passwd的自动输入

    su本身会去调passwd这个程序,而passwd会检测“必须从终端上得倒输入”,所以任何重定向都是不起作用的,但是……有一个东东有用,就是expect,它通过伪终端和 spawn 出来的程序通信,而伪终端是 passwd 会认的(不然网络登陆就不行了),简单的脚本如下:

    #!/usr/bin/expect -f
    
    spawn su -l
    expect "Password:*"
    sleep 1
    send "your password
    "
    expect "root]#"
    interact
    exit
    

    当然这种方式的主要用途不是提供给别人用哈,不然密码的随意暴露也太危险了,所以它是一种当前使用非常广泛、用于批处理自动化测试的脚本语言。类似于上面脚本,你在自己机器上当然也可以为了省事而这样做。

    expect同样支持scp的密码自动填入:

    #!/usr/bin/expect
    
    set password 123
    spawn scp ./south_db.sql root@135.252.234.118:~
    expect -nocase "password: "
    send "$password
    "
    expect eof
    

    可惜su并不支持“无密码公钥认证”,否则可以采用类似scp的公钥认证方式,从而避免 expect 明文记录密码

    2. sshpass

    远程连接某台主机: sshpass -p your_password ssh [-p nPort] root@192.168.11.11

    从密码文件读取文件内容作为密码去远程连接主机: sshpass -f xxx.txt ssh root@192.168.11.11

    向scp程序传送默认密码: sshpass -p 'passwd' scp root@host_ip:/home/test/t ./tmp/

    3. netstat/ss

    netstat 命令已被弃用,而 ss 命令代替了显示更详细的网络统计信息。

    netstat/ss -tnlp

    • -t 启用TCP端口列表
    • -u 启用UDP端口列表
    • -l 仅输出监听套接字
    • -n 显示端口号
    • -p 显示进程/程序名称

    3.1. 实时观察TCP和UDP开放端口

    要实时监视TCP和UDP端口,可以使用所示的watch实用程序运行netstat或ss工具。

    watch ss -tulpn

    4. locate/mlocate

    5. top/htop

    6. lftp

    7. kill/killall

  • 相关阅读:
    webpack--------类似gulp的工具,在gulp后面出来的
    canvas 绘制矩形
    HTML5 Canvas基础知识
    视差滚动效果
    闭包的理解
    AJAX 跨域
    json与jsonp的区别
    针对AJAX与JSONP的异同
    如何使用JSONP
    JSONP的客户端的具体实现
  • 原文地址:https://www.cnblogs.com/brt2/p/13055853.html
Copyright © 2011-2022 走看看