虛擬機問題(持續更新.......)

来源:https://www.cnblogs.com/JcrLive/archive/2020/03/10/12458595.html
-Advertisement-
Play Games

可以ping通,但是無法ssh連接 service iptables stop service sshd startsudo ufw statussudo ufw disablesudo ufw allow 22 ssh時permission denied, please try again 找到/ ...


可以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>\n#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, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\3\0\0004\0\0\0"..., 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, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\2348\0004\0\0\0"..., 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, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\1\0\0\0\0\0"..., 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • swagger,參數,list,swaggerui測試list ...
  • 一.配置框架的核心類庫 首先我們使用.NET Core的配置框架需要安裝額外的NuGet擴展包,下麵是列舉最常用的幾個擴展包以及所對應的配置功能 | NuGet Package | Description | | : | | | Microsoft.Extensions.Configuration ...
  • .netcore實際開發過程中,先總結兩個坑,這兩個坑都是關於Linux(CentOS)和windows下的相容性問題。Linux(CentOS)環境下,獲取系統時間,實際時間少了8個小時;文件路徑​被識別為了文件名。下麵就簡單分享一下解決方式,其實只要你一看,發現很簡單的,之所以分享出來,當你才開... ...
  • 1. /bin 二進位目錄,存放許多用戶級的GNU工具 2. /boot 啟動目錄,存放啟動文件 3. /dev 設備目錄,Linux在這裡創建設備節點 4. /etc 系統配置文件目錄 5. /home 用戶目錄 6. /lib 庫目錄,存放系統和應用程式的庫文件 7. /opt 可選目錄,常用於 ...
  • 場景 Vmware的版本是10.0 在進行安裝CentOS8時提示:客戶機操作系統已禁用CPU,請關閉或重置虛擬機。 註: 博客:https://blog.csdn.net/badao_liumang_qizhi 關註公眾號霸道的程式猿獲取編程相關電子書、教程推送與免費下載。 實現 在排除了殺毒軟體 ...
  • 背景 By 魯迅 By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex A53,雙核 3. 使用工具:Source Insight 3.5, Visio 1. 概述 組調度( )是使用Linux 的cpu子系統來實現的,可以將進程進行分組,按組來分配CPU資源 ...
  • 1. 從某個中斷開始 INT 0X80中斷,進入內核 ,調用函數就是system_call ,接下來就是執行system_call 2. 五段論中的中斷入口和中斷出口以及schedule 1. 首先又壓棧一些用戶態的信息, 2. 接下來就是具體去處理sys_fork,也就是中斷要產生的效果,但是在執 ...
  • 父進程創建一個子進程,並等待子進程結束;子進程調用execve啟動 使用shell的ps命令,查看系統當前的進程信息 #include <unistd.h> #include <stdio.h> #include <stdlib.h> main() { pid_t pid; char* str; c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...