zoukankan      html  css  js  c++  java
  • 虚拟机问题(持续更新.......)

    可以ping通,但是无法ssh连接

    service iptables stop  
    service sshd start


    sudo ufw status
    sudo ufw disable
    sudo ufw allow 22

    ssh时permission denied, please try again

    找到/etc/ssh/sshd_config  中的PermitRootLogin  后的值改为yes
    在16中适用,在新版本中并没用
    我创了两台虚拟机,其中一台是在较早的时候配置的,里面干了啥都忘记了,因为当时的主机名和用户名都是一样的,然后尝试修改主机名和密码,结果连上了,再创建新的虚拟机时再也没有碰到过这个问题了。。。。
    last
    -a 把从何处登入系统的主机名称或ip地址,显示在最后一行。
    -d 指定记录文件。指定记录文件。将IP地址转换成主机名称。
    -f <记录文件>  指定记录文件。
    -n <显示列数>或-<显示列数>  设置列出名单的显示列数。
    -R 不显示登入系统的主机名称或IP地址。
    -x 显示系统关机,重新开机,以及执行等级的改变等信息
    
    以下看所有的重启、关机记录
    
    last | grep reboot
    last | grep shutdown
    history
    列出所有的历史记录:
    
    history
    只列出最近10条记录:
    
    history 10 (注,history和10中间有空格)
    使用命令记录号码执行命令,执行历史清单中的第99条命令
    
    !99 (!和99中间没有空格)
    重复执行上一个命令
    
    !!
    执行最后一次以rpm开头的命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)
    
    !rpm
    逐屏列出所有的历史记录:
    
     history | more
    立即清空history当前所有历史命令的记录
    
    history -c
    cat, tail 和 watch
    系统所有的日志都在 /var/log 下面自己看(具体用途可以自己查,附录列出一些常用的日志)
    
    cat /var/log/syslog 等
    cat /var/log/*.log
    tail -f
    如果日志在更新,如何实时查看 tail -f /var/log/messages
    
    还可以使用 watch -d -n 1 cat /var/log/messages
    
    -d表示高亮不同的地方,-n表示多少秒刷新一次。
    
    该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,
    这一特性,对于查看日志是非常有效的。如果想终止输出,按 Ctrl+C 即可。
    
    除此之外还有more, less ,dmesg|more...
    
    linux日志文件说明
    /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
    /var/log/secure 与安全相关的日志信息
    /var/log/maillog 与邮件相关的日志信息
    /var/log/cron 与定时任务相关的日志信息
    /var/log/spooler 与UUCP和news设备相关的日志信息
    /var/log/boot.log 守护进程启动和停止相关的日志消息
    /var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
    系统日志问题

    将一个用户设置为在远程连接时只执行一段脚本,退出脚本后直接推出连接

    在.bashrc最后一行加要执行的脚本文件的绝对路径
    /home/xxx/xxx/xxx/xx.sh
    logout
    !!要在用户目录中的.bashrc
    !!该文件不是readonly文件,如果根目录的bash.bashrc时为readonly文件
    !!这两个都可实现此功能.区别是单个用户和所有用户


    # 修改readonly文件 :w !sudo tee %
    # :q!

    linux   awk

    session_tag=$1
    has_process=`ps -ef|grep ssh|grep -v sshpass|grep "$session_tag"|awk '{ print $2 }'`
    调用脚本时传入一个参数用$1
    在shell脚本中用此进行赋值  $2为第二列数据  在此为程序id
    详细的介绍自行百度,我用的不多就没深入看过

    strace

    在开发堡垒机时用来进行进程的系统调用, 也就是在远程端的所有操作,并输出日志
    strace -fp "has_process" -tt -o ./logs/ad/"today"/"session_tag".log
    输出文件未处理
    图片在下方
    
    has_process, session_tag 在上方有提及
    today   为  today=`date "+%Y_%m_%d"`  shell 中获取格式化时间
    参数在下方介绍
    
    
    strace - trace system calls and signals 
    usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] 
                  [-p pid] ... [-s strsize] [-u username] [-E var=val] ... 
                  [command [arg ...]] 
       or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ... 
                  [command [arg ...]] 
        
    1。 -c -- count time, calls, and errors for each syscall and report summary 
    为每个系统调用计算时间、调用、错误,并报告摘要 
    
    2。 -f -- follow forks, -ff -- with output into separate files 
    -f 跟踪fork的进程;-ff 把输出定向到独立的文件 
    
    3。 -F -- attempt to follow vforks, -h -- print help message 
    -F 尝试跟踪vfork的进程,当今平台与-f功能相同;-h 打印帮助信息 
    
    4。 -i -- print instruction pointer at time of syscall 
    在系统调用时,打印指令指针 
    
    5。 -q -- suppress messages about attaching, detaching, etc. 
    抑制附加、分离等信息 
    
    6。 -r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs 
    -r 打印相对时间戳;-t 绝对时间戳;-tt 微秒 
    
    7。 -T -- print time spent in each syscall, -V -- print version 
    -T 打印每个系统调用的时间花费;-V 打印版本 
    
    8。 -v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args 
    -v 详细模式,打印非简略的参数、状态、termio[s]等 
    
    9。 -x -- print non-ascii strings in hex, -xx -- print all strings in hex 
    -x 打印非ascii的字符串为16进制;-xx 打印所有的字符串为16进制 
    
    10。-a column -- alignment COLUMN for printing syscall results (default 40) 
    对系统调用结果对齐列(默认为40列) 
    
    11。-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]... 
        options: trace, abbrev, verbose, raw, signal, read, or write 
    在-e后附表达式。一个合格的表达式:选项=[!]所有 或者 选项=[!]值1[,值2]....;可选项:跟踪、缩写、冗长、原始的东东、信号、读、写。 
       
    12 -o file -- send trace output to FILE instead of stderr 
    发送跟踪输出到文件,而不是stderr 
    
    13。-O overhead -- set overhead for tracing syscalls to OVERHEAD usecs 
    设置跟踪系统调用的最大时间 
    
    14。-p pid -- trace process with process id PID, may be repeated 
    跟踪值为ID的进程,可以重复多个哦(注:最多32个) 
    
    15。-s strsize -- limit length of print strings to STRSIZE chars (default 32) 
    限制打印字符串的最大长度,默认为32字节 
    
    16。-S sortby -- sort syscall counts by: time, calls, name, nothing (default time) 
    排序,以系统调用过程中的时间、或者调用名等作为排序项。 
    
    17。-u username -- run command as username handling setuid and/or setgid 
    以其他用户名或者组名运行命令 
    
    18。-E var=val -- put var=val in the environment for command 
    设置环境变量 
    
    19。-E var -- remove var from the environment for command 
    清除环境变量 
    
     
    
    ========================================================
    
    1。查看CPU运行时间 
    [guest@localhost tmp]$ strace -c ./b.out         
    % time     seconds usecs/call     calls    errors syscall 
    ------ ----------- ----------- --------- --------- ---------------- 
    42.72    0.000692          87         8           open 
    38.40    0.000622         622         1           set_thread_area 
    16.85    0.000273         137         2           munmap 
       2.04    0.000033           5         7           read 
       0.00    0.000000           0         8           close 
       0.00    0.000000           0         1           execve 
       0.00    0.000000           0         1           access 
       0.00    0.000000           0         3           brk 
       0.00    0.000000           0         4           mprotect 
       0.00    0.000000           0        17           mmap2 
       0.00    0.000000           0         7           fstat64 
    ------ ----------- ----------- --------- --------- ---------------- 
    100.00    0.001620                    59           total 
    
     
    
    2。查看相对运行时间 
    [guest@localhost tmp]$ strace -r ./b.out 
    0.000560 mprotect(0xb91000, 8192, PROT_READ) = 0 
         0.000196 mprotect(0x45c000, 4096, PROT_READ) = 0 
         0.000884 mprotect(0x42a000, 16384, PROT_READ) = 0 
         0.000191 mprotect(0xa4a000, 4096, PROT_READ) = 0 
         0.000144 munmap(0xb7f12000, 45307) = 0 
         0.000577 brk(0)                    = 0x8c2b000 
         0.000171 brk(0x8c4c000)            = 0x8c4c000 
         0.000183 open("sleeper.cpp", O_RDONLY|O_LARGEFILE) = 3 
         0.000225 read(3, "#include <unistd.h>
    #include <io"..., 8191) = 355 
         0.000372 read(3, "", 8191)         = 0 
         0.000298 close(3)                  = 0 
         0.000192 exit_group(0)             = ? 
    
     
    
    3。查看文件变动相关的信号 
    [guest@localhost tmp]$ strace -e trace=desc ./b.out 
    open("/etc/ld.so.preload", O_RDONLY)    = 3 
    fstat64(3, {st_mode=S_IFREG|0444, st_size=17, ...}) = 0 
    close(3)                                = 0 
    open("/lib/libcwait.so", O_RDONLY)      = 3 
    read(3, "177ELF111331203004"..., 512) = 512 
    fstat64(3, {st_mode=S_IFREG|0755, st_size=2572, ...}) = 0 
    close(3)                                = 0 
    open("/etc/ld.so.cache", O_RDONLY)      = 3 
    fstat64(3, {st_mode=S_IFREG|0644, st_size=45307, ...}) = 0 
    close(3)                                = 0 
    open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3 
    read(3, "177ELF111331P2348004"..., 512) = 512 
    fstat64(3, {st_mode=S_IFREG|0755, st_size=936908, ...}) = 0 
    close(3)                                = 0 
    open("/lib/libm.so.6", O_RDONLY)        = 3 
    
     
    
    
    4。strace -o output.txt -T -tt -e trace=all -p 28979
    上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面
    
     
    
    5。查看进程是否卡住
    strace -p 36699
    Process 36699 attached - interruptto quit
    futex(0x22d8400, FUTEX_WAIT_PRIVATE, 0, NULL
    # 到这里没有任何输出 一直挂起
    
     
    
    6。寻找被程序读取的配置文件
    
    stracephp 2>&1 | grepphp.ini
    open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (Nosuchfileor directory)
    open("/etc/php.ini", O_RDONLY) = 3
    lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69345, ...}) = 0
    
    
    7。跟踪指定的系统调用
    
    strace命令的-e选项仅仅被用来展示特定的系统调用(例如,open,write等等)
    
    让我们跟踪一下cat命令的 open 系统调用。
    
    stracecat /tmp/trace.2043925204.012003.xt | head
    execve("/bin/cat", ["cat", "/tmp/trace.2043925204.012003.xt"], [/* 35 vars */]) = 0
    brk(0) = 0x167f000
    mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb7d8991000
    access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Nosuchfileor directory)
    open("/etc/ld.so.cache", O_RDONLY) = 3
    fstat(3, {st_mode=S_IFREG|0644, st_size=74047, ...}) = 0
    mmap(NULL, 74047, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb7d897e000
    close(3) = 0
    open("/lib64/libc.so.6", O_RDONLY) = 3
    read(3, "177ELF21133>1p3561"..., 832) = 832
    fstat(3, {st_mode=S_IFREG|0755, st_size=1920936, ...}) = 0
    mmap(NULL, 3750152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb7d83df000
    mprotect(0x7fb7d8569000, 2097152, PROT_NONE) = 0
    mmap(0x7fb7d8769000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x7fb7d8769000
    ...
    
    
    8。 统计概要
    
    它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示:
    
    strace -c ls
    environments generate githooks hieradata manifests master modules README.md
    % time seconds usecs/call calls errors syscall
    
    ------ ----------- ----------- --------- --------- ----------------
    0.00 0.000000 0 10 read
    0.00 0.000000 0 1 write
    0.00 0.000000 0 12 open
    0.00 0.000000 0 14 close
    0.00 0.000000 0 12 fstat
    0.00 0.000000 0 28 mmap
    View Code

     

    在sudo apt 时出现E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)或其他进程占用

    ps -e|grep apt
    
    sudokill 相关进程
    
    
    sudo rm /var/cache/apt/archives/lock  
    sudo rm /var/lib/dpkg/lock
    
    
    sudo apt update

    普通用户sudo不要密码

    sudo vim /etc/sudoers   
    版本问题
    pkexec visudo 进行编辑
    按提示保存 xxx ALL
    =(ALL) NOPASSWD:ALL 设置组 %xxx ALL.....同上
    -1:强制使用ssh协议版本1;
    -2:强制使用ssh协议版本2;
    -4:强制使用IPv4地址;
    -6:强制使用IPv6地址;
    -A:开启认证代理连接转发功能;
    -a:关闭认证代理连接转发功能;
    -b:使用本机指定地址作为对应连接的源ip地址;
    -C:请求压缩所有数据;
    -F:指定ssh指令的配置文件;
    -f:后台执行ssh指令;
    -g:允许远程主机连接主机的转发端口;
    -i:指定身份文件;
    -l:指定连接远程服务器登录用户名;
    -N:不执行远程指令;
    -o:指定配置选项;
    -p:指定远程服务器上的端口;
    -q:静默模式;
    -X:开启X11转发功能;
    -x:关闭X11转发功能;
    -y:开启信任X11转发功能。
    
    
    -D
    SSH 会建立一个 socket 监听 ,把数据转发到目标机器上.
    -L
    命令中的L参数一共接受三个值,分别是"本地端口:目标主机:目标主机端口",它们之间用冒号分隔。这条命令的意思,就是指定SSH绑定本地端口2121,然后指定host3将所有的数据,转发到目标主机host2的21端口(假定host2运行FTP,默认端口为21)
    -p
    表示指定登录端口
    -N
    表示只连接远程主机,不打开远程shell
    -T
    表示不为这个连接分配TTY
    和上面的 N 参数 一起使用,代表这个SSH连接只用来传数据,不执行远程操作。
    -f
    表示SSH连接成功后,转入后台运行,如果想关闭,只能通过 kill 命令去杀掉进程.
    ssh参数

    ssh登录远程服务器时无密码登录,因为要使用sshpass设置免密,需要定制上面提到的审计系统,所以要修改sshpass源码,不能修改系统中原有的sshpass,所以需要下载新的sshpass源码

    百度sshpass下载  tar解压
    解压参数在Linux中有介绍
    sudo apt install zlib1g
    sudo apt install zlib1g-dev
    sudo apt install libssl
    ./configure    [--prefix=路径]
    make
    make install
    如果permission denied 去掉prefix
    sudo make install


    参考:https://askubuntu.com/questions/424786/permission-denied-while-running-make-install

    sshpass跳过密码登录并添加日志功能

     sshpass -p [密码] [修改后的sshpass源码路径abs path 【/home/jcr/Desktop/openssh8/bin/ssh】] 用户名@IP -o StrictHostKeyChecking=no -Z 传入的参数

    -Z 为源码中添加的参数
    使用subprocess模块

    smartmontools  相关

    参考:https://linux.cn/article-4461-2.html

  • 相关阅读:
    神经网络训练收敛的解决办法
    minSdkVersion
    onlyoffice使用
    linux系统磁盘不足处理方法
    编辑docker容器中的文件
    如何使用Java获取上传图片需要旋转的角度且获取正确方向的图片
    Java数据类型转换
    bat脚本实现jdk安装、环境变量添加及jar包运行
    java实现文件上传接口及java调用文件上传接口
    flutter常用问题查询
  • 原文地址:https://www.cnblogs.com/JcrLive/p/12458595.html
Copyright © 2011-2022 走看看