星期日, 11月 23, 2008
user_xattr in SuSE Linux
看到預設的mount option 為 acl,user_xattr
acl 為Access Control List, 但是 user_xattr 的mount option 就比較少看到
參考小州老師的文章
引用於:
http://www.lccnet.com.tw/commercial/e-paper/0507/lecture_02.html
Extended Attribute (EA),可以讓使用者對於檔案目錄提供額外的標籤紀錄來表示內容描述
所以就來實做lab 一下
首先先觀察是否有啟用 user_xattr的 mount option
linux-mk16:~ # cat /etc/fstab | grep home
/dev/sda3 /home ext3 acl,user_xattr,usrquota,grpquota 1 2
所以目前是有加上 user_xattr 選項
ok, 來實際lab
linux-mk16:/home/max # touch /home/max/xattr_test
linux-mk16:/home/max # ls /home/max/
big2 maxfile maxfile2 maxfile3 xattr_test
建立一個檔案 xattr_test 於/home/max
linux-mk16:/home/max # getfattr /home/max/xattr_test
觀察相關的資訊
使用setfattr 設定 相關的資訊
linux-mk16:/home/max # setfattr -n user.max -v "max info" /home/max/xattr_test
linux-mk16:/home/max # setfattr -n user.ines -v "ines label" /home/max/xattr_test
再次觀察相關的資訊,會看到名稱的資訊
linux-mk16:/home/max # getfattr /home/max/xattr_test
getfattr: Removing leading '/' from absolute path names
# file: home/max/xattr_test
user.ines
user.max
根據名稱來觀察裡面的value
linux-mk16:/home/max # getfattr -n user.max /home/max/xattr_test
getfattr: Removing leading '/' from absolute path names
# file: home/max/xattr_test
user.max="max info"
linux-mk16:/home/max # getfattr -n user.ines /home/max/xattr_test
getfattr: Removing leading '/' from absolute path names
# file: home/max/xattr_test
user.ines="ines label"
^__^
Lab 完成, 提醒一下自己
星期日, 10月 26, 2008
修復 iphone 照相功能不能存檔的問題
觀察了一下, 想說應該是資料夾的問題
爬了一下文 , 還不止一個人碰到.
解決的方式為
- 安裝 OpenSSH套件於iphone
- 利用putty 連入iphone的ssh (帳號是root, 密碼為 alpine)
- 檢查/private/var/mobile/Media/DCIM/100APPLE(或是101APPLE) 擁有人為mobile 群組為wheel
- 刪除/private/var/mobile/Media/DCIM 中 .misc 這個管理縮圖出問題的資料夾
完成修復的動作
星期三, 10月 15, 2008
OpenSolaris and Weka
以32 bit平台來說
在windows下只能跑 1.4 GB
在Linux 下只能跑 1.7 GB
但是在Solaris下就可以跑 3.9 GB
所以就跑去安裝 OpenSolaris x86_64的版本
在這個網頁下載 OpenSolaris 2008.05 版本,
http://opensolaris.org/os/downloads/
這個版本的iso燒錄出來是Live CD, 可以當Live CD使用也可以拿來安裝
我把他放在VMWare內啟動, 第一個步驟會選取鍵盤的語系, 預設是美式鍵盤 41
接下來選取語系, 這邊我用的是繁體中文 2
順利的話就會進入桌面, 點選桌面上的 "安裝 OpenSolaris"
就會進入安裝畫面, 點選下一步
這個時候會詢問要安裝到哪個分割區, 這邊我選的是整顆硬碟
接下來選取時區及地區, 當然是選取台灣台北
選取語系, 繁體中文
接下來輸入root密碼及使用者的資訊
開始安裝
安裝完成後, 需要重新開機
這樣安裝就大功告成登入畫面還蠻漂亮的說

接下來到weka的網站下載weka的程式
http://www.cs.waikato.ac.nz/~ml/weka/index_downloading.html
由於是 Solaris 所以當然下載 Other platforms (Linux, etc.)
下載weka-3-5-8.zip
下載之後照著他的說明
Click here to download a zip archive containing Weka
(weka-3-5-8.zip; 18,596,454 bytes)
First unzip the zip file. This will create a new directory called weka-3-5-8. To run Weka, change into that directory and type
java -jar weka.jar
Note that Java needs to be installed on your system for this to work. Also note, that using -jar will override your current CLASSPATH variable and only use the weka.jar.
$cd /export/home/max/Desktop
$unzip weka-3-5-8.zip
$cd weka-3-5-8
$java -jar weka.jar
發現雖然可以呼叫出 weka但是weka的 explorer卻不能用
後來在網路上找了很久的答案, 找到一個解決方式
就是在使用者家目錄下建立一個檔案 LookAndFeel.props
內容為Theme=javax.swing.plaf.metal.MetalLookAndFeel
可用下面的指令來建立
$echo "Theme=javax.swing.plaf.metal.MetalLookAndFeel " > ~/LookAndFeel.props
就可以順利呼叫 weka的 explorer
^^
星期三, 10月 01, 2008
linux shell echo 的顏色控制
http://ssorc.tw/rewrite.php/read-875.html
http://blog.roodo.com/prin339/archives/1121381.html
在撰寫shell script 很有用處
星期六, 9月 27, 2008
20080927 SQL 入門班筆記
20080927
SQL 入門班 邱梓君
先考70-431 再考 70-443 及 70-444
Lab:執行第一次啟動
開始 --> 所有程式 --> Microsoft SQL Server 2005 --> SQL Server Management Studio --> 連接
Notes:
Microsoft SQL Server Management Studio 只是圖形介面不是SQL Server, 關閉這個介面不是關閉SQL Server
要使用指令的話可以點選''新增查詢''
為了避免各產品之間的SQL語法不相容, 因此由ANSI( American National Standard Institute 美國國家標準局 ) 制定出SQL-92, 定義出SQL 的關鍵字與語法標準, 以提高各家產品在SQL語法上的相容性. 但正因SQL-92 為統一標準, 自然無法發揮各家資料庫其特殊的長處, 因此業界真正使用的SQL語言, 通常是包含SQL-92 所定義的標準內容, 另外再加上自家資料庫額外擴充的功能.
SQL語法( Structured Query Language ) 並不是SQL Server
SQL語言不能獨立執行.
Tel.xls.exe 隨身碟病毒( 在task manager 會看到alg的process )
SQL語言的功能分類
DDL( Data Definition Language 資料定義語言 )
DML( Data manipulation Language 資料處理語言)
DCL( Data Control Language 資料控制語言 )
Lab:新增資料庫
開啟Microsoft SQL Server Management Studio
以圖形介面的方式
展開本機 --> 資料庫 --> 滑鼠右鍵 --> 新增資料庫 --> 輸入資料庫名稱 --> 確定
建立完成( 可以參考右邊的資料庫會多出NewNew 資料庫)
如果要刪除資料庫, 請於NewNew資料庫上 --> 滑鼠右鍵 --> 刪除 --> 確定
以命令提示字元的方式
點選''新增查詢''
輸入CREATE DATABASE NewNew --> 點選 '執行'
輸入DROP DATABASE NewNew -->點選 ' 執行'
使用 指令的方式建立資料庫要在資料庫--> 滑鼠右鍵 --> 重新整理 才會看到成果
如果要執行特定指令, 要先選取某一個指令, 再去按執行, 不然會從頭開始執行.
資料庫的名稱看起來沒有分大小寫
每個資料庫包含
MDF 1 ( SQL Server Database Primary Data File只能有一個)
NDF 0 ~ no_limit
LDF 1 ~ no_limit ( SQL Server Database Transaction Log File 內容為Log 檔, 至少會有一個為了還原使用, 所以Log檔重要性大於資料庫)
解決字型過小的問題
工具 --> 選項 --> 環境 --> 字型和色彩 --> 選取自訂的大小
Notes:
在資料庫內的自動成長, 切記不要使用預設值 ( 會長大的很快, 視單位狀況而定 ), 微軟建議如果資料量小於 1GB 可以使用以MB為單位, 如果大於1GB建議以百分比為單位.
資料庫的初始大小, 在實務上如果已經知道資料庫的大小就直接給足整顆硬碟. 不需要讓SQL Server 還要去做自動成長浪費時間, 直接給足.
不要把資料庫放在系統碟, 最好整顆都給資料庫( 讓資料庫可以在硬碟做循序存取, 效能的差異很大 )
Lab: 建立資料庫,並建立兩個群組
先於 C:\ 建立資料夾名稱為 新新
於C:\新新 資料夾內建立資料夾, 名稱為主主 ( 存放MDF )
於C:\新新 資料夾內建立資料夾, 名稱為LOG ( 存放LDF )
於C:\新新 資料夾內建立資料夾, 名稱為次次1 ( 存放NDF )
於C:\新新 資料夾內建立資料夾, 名稱為次次2 ( 存放NDF )
開啟Microsoft SQL Server Management Studio
展開本機 --> 資料庫 --> 滑鼠右鍵 --> 新增資料庫 --> 輸入資料庫名稱(NewNew) --> 確定
修改邏輯名稱 NewNew 為 新新( 確認可以支援中文) --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\主主 --> 確定
修改邏輯名稱 NewNew_log 為新新_log --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\LOG --> 確定
點選' 加入' 按鈕 --> 輸入邏輯名稱 次次1 --> 檔案群組 點選 '新增檔案群組' --> 輸入群組名稱 '第一群' --> 確定 --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\次次1 --> 確定
點選' 加入' 按鈕 --> 輸入邏輯名稱 次次2 --> 檔案群組 點選 '第一群' --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\次次1 --> 確定
點選' 加入' 按鈕 --> 輸入邏輯名稱 次次3 --> 檔案群組 點選 '第一群' --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\次次1 --> 確定
點選' 加入' 按鈕 --> 輸入邏輯名稱 次次4 --> 檔案群組 點選 '新增檔案群組' --> 輸入群組名稱 '第二群' --> 確定 --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\次次2 --> 確定
點選' 加入' 按鈕 --> 輸入邏輯名稱 次次2 --> 檔案群組 點選 '第二群' --> 點選 路徑的'...' 按鈕 --> 選取C:\新新\次次2 --> 確定
點選 '確定' 完成新增NewNew資料庫的練習
此時NewNew資料庫結構如下
Primary 群
內含新新.mdf
第一群
內含次次1.ndf, 次次2.ndf, 次次3.ndf
第二群
內含次次4.ndf, 次次5.ndf
LOG(不包含於群內)
內含新新_log.ldf
中午休息
常用的指令於command-line
sp_helpdb 查閱目前伺服器中的所有資料庫
sp_helpdb 資料庫名稱 查閱指定資料庫
例如 sp_helpdb NewNew
卸離與離線工作的差別
離線工作
使用者連線不到資料庫, 但是還是可以在Microsoft SQL Server Management Studio看到
可以在該資料庫上方 使用滑鼠右鍵 --> 工作 --> 線上工作 來掛載回來
卸離
使用者連線不到資料庫, 但是也不能在Microsoft SQL Server Management Studio看到
可以在該資料庫上方 使用滑鼠右鍵 --> 工作 --> 卸離 --> 確定
可以在資料庫上方 使用滑鼠右鍵 --> 附加 --> 加入 --> 選取MDF檔案位置 --> 確定 --> 確定
以command-line 來做卸離
sp_detach_db 資料庫名稱
以command-line 來做附加
sp_attach_db 資料庫名稱 'MDF 所在位置'
以command-line 來做附加
CREATE DATABASE 資料庫名稱
ON
( FILENAME='C:\新新\主主\新主.MDF')
FOR ATTACH
Notes:
當有人在使用資料庫的時候不可以調整資料庫( 錯誤訊息會告知正在使用中)
卸離的目的為昇級或是移動
MDF 會記住卸離前的檔案位置, 至少要告訴MDF 檔案新的檔案位置
可以按鍵盤上面的F5 來執行
一次要執行多到指令, 請用GO 隔開
Lab: 卸離資料庫以及附加資料庫
卸離NewNew資料庫
在NewNew資料庫上方 --> 工作 --> 卸離 --> 確定
使用command-line 附加
於command-line 輸入
create database NewNew
on
(filename='c:\新新\主主\新新.mdf')
for attach
將上述指令選取起來 --> 點選 '執行'
觀察左方就會發現NewNew資料庫已經附加上來
用ALTER DATABASE 敘述修改資料庫 ( 使用圖形介面會比較快)
Lab: 修改資料庫
於C:\新新 資料夾內建立資料夾, 名稱為次次3 ( 存放NDF )
請確認NewNew資料庫有被附加
於command-line 畫面輸入
--修改資料庫, 新增一個檔案群組
ALTER DATABASE NewNew ADD FILEGROUP 第三群
GO
--修改資料庫, 新增一個檔案至指定的檔案群組
ALTER DATABASE NewNew
ADD FILE
(
NAME=次次6, FILENAME='C:\新新\次次3\次次6.NDF',
SIZE=10MB, MAXSIZE=50, FILEGROWTH=8%
) TO FILEGROUP 第三群
GO
--修改資料庫, 新增一個檔案至指定的檔案群組
ALTER DATABASE NewNew
ADD FILE
(
NAME=次次7, FILENAME='C:\新新\次次3\次次7.NDF',
SIZE=10MB, MAXSIZE=50, FILEGROWTH=8%
) TO FILEGROUP 第三群
GO
--修改資料庫, 設定指定的檔案群組為預設群組
ALTER DATABASE NewNew
MODIFY FILEGROUP 第二群 DEFAULT
GO
--修改資料庫, 設定指定的檔案群組為唯讀群組
ALTER DATABASE NewNew
MODIFY FILEGROUP 第三群 READ_ONLY
Lab:修改設定值
先觀察NewNew 資料庫
於NewNew 資料庫上方 --> 滑鼠右鍵 --> 屬性
於command-line
ALTER DATABASE NewNew SET RECOVERY SIMPLE
GO
ALTER DATABASE NewNew SET ANSI_NULLS ON
GO
ALTER DATABASE NewNew SET ANSI_NULL_DEFAULT ON
GO
ALTER DATABASE NewNew SET AUTO_SHRINK ON
GO
再觀察NewNew 資料庫
於NewNew 資料庫上方 --> 滑鼠右鍵 --> 屬性
觀察屬性的改變
Notes:
利用圖形介面可以在資料庫的屬性內, 藉由 '選項' 內的 '狀態' --> '限制存取' 內可以調整為single來讓其他使用者離線
在command-line 可以使用 ALTER DATABASE NewNew SET SINGLE_USER WITH ROLLBACK IMMEDIATE 來立即把資料庫斷線
在command-line 可以使用 ALTER DATABASE NewNew SET MULTI_USER 來回復多人模式
資料型別
整數 使用的位元數
bigint 8bytes
int 4bytes
smallint 2bytes
tinyint 1bytes
bit 1bit
近似浮點數
float 8bytes
real 4bytes
日期時間
datetime 8bytes
smalldatetime 4bytes
精確位數
numeric
decimal
字串
char 1個字元1個byte, 為固定長度, 未填滿的部份, 會自動補上空白字元
varchar 1個字元1個byte, 儲存多少即佔多少空間
text 1個字元1個byte, 儲存多少即佔多少空間, 最大可達2GB
Unicode 字串 雙位元文字編碼標準
nchar 1個字元2個byte, 為固定長度, 未填滿的部份, 會自動補上空白字元
nvarchar 1個字元2個byte, 儲存多少即佔多少空間
ntext 1個字元2個byte, 儲存多少即佔多少空間, 最大可達2GB
Notes:
char 還有varchar 差別在如果沒有填滿, 會不會補空白字元, varchar 還有char 佔用的空間都一樣, varchar沒有比較省空間, 只是對程式開發人員, 在撈資料的時候字數會不同(不用考慮空白字元的問題, 不需特別處理去除空白字元).
varchar 可變動 不會補空白字元
char 不可變動 會補空白字元
以資料庫的角度, 使用char 的方式會比較好, 不用去計算哪些資料沒有使用
以程式人員的角度, 使用varchar 的方式會比較好, 不用處理空白字元
星期六, 9月 20, 2008
20080920結構化佈線 speaker ZMAN
20080920
主講人 ZMAN
資料通訊與佈線設計 祝國忠譯 博碩文化
電腦網路與連結技術 黏添壽著 旗標
給老闆的報表重點
前言
整體成本
效益
如果沒有辦法了解公司所有部門的運作, 不是MIS只是水電工
由哈克大大的案例了解成功的MIS
LCD --> 直接找原廠/買最便宜的model, 但是老闆最知名的品牌( Viewsonic), 購買完之後做公司省電報告
軟體授權 --> 找所有賣軟體的廠商, 順便凹廠商送教育訓練
IP PHONE --> 在導入的很久之前, 就先找人邊吃午餐邊簡報給老闆, 先導入觀念
3COM --> 單一品牌, 單一型號( 為何要讓我的公司設備有兩個型號? 讓我的IT 人員及老闆複雜化?)
廠商分類栽培 --> 讓專業的廠商來負責
ITIL --> 讓老闆知道, 準備好當主管
人緣極好 --> 所有部門都是我們服務的對象, 讓所有的部門喜歡, 是升主管的關鍵
TAI-942 目的
建立國際通用的標準
單一標準建立 Data Center
標準要參考活用( 誰說設備上面不能寫校長室01 校長室02這樣的標籤?) 只要管理人員可以一目了然即可
Data Center
EDC: Enterprise Data Center 私有的數據中心
IDC: Internet Data Center 公開租賃的數據中心
非結構化佈線架構
單一用途, 拉一條線, 把server直接接線到Switch, 缺點是非常不彈性
結構化佈線架構
已經事先把機櫃及配線櫃線路事先佈置好, 以針對需求改變port用途, Server 接線在單櫃的panel, 只要對應的配線櫃接到switch 就完成連線.
DATA Center 關鍵指標
可靠性( Reliability) –MTBF( Mean Time Between Failures)
可服務性( Serviceability) – MTTR( Mean Time to Repair)
可用性(Availiability)
DATA CENTER 四個層級
Tier I 沒有任何備援
Tier II 部分備援
Tier III Active/Stand by 可快速維修
Tier IV Active/Active 故障容錯
機房的窗
不可以有外窗
因為熱會浪費一堆空調電費
因為窗戶會破, 有安全問題
可以有內窗
機房的溫溼度
乾球溫度 20 – 25 度
相對溼度 40% -- 55%
恆溫恆濕是機房基本需求
TAI-942 最重要的概念
冷熱通道( 冷氣流及熱氣流必須分開, 機櫃應該前吸風後排風)
機櫃該如何擺
機櫃之前的通道120CM
機櫃之間門對門, 後面對後面 以分開冷熱流
新建築物 – 提早要求的事
機房位置
(機房到client 盡量不要破白米, 分機房跟總機房儘量用銅線), 不是為了省光纖而是買不起後面的設備
機房大小:
要先要空間大小及形狀( 視機櫃大小調整, 而且要規劃到 Max大小)
要求資訊管線
沒有獨立的資訊管線, 會有很多問題, 也要注意管線的大小問題
要求獨立電力
如果有柴油發電機 , 你要告知加上你的用電量
要求獨立空調
機房位置永久不變
不準土建, 機電將佈線包在大包內
機櫃用一輩子不會壞, 值得多花一點錢, 買錯丟不了
不好的機櫃缺乏管理機制, 線路錯綜複雜
有些機櫃前面使用壓克力門, 後面線路錯綜複雜會妨礙機櫃散熱
配線櫃正常是使用兩柱開放式機櫃
伺服器櫃正常是使用四柱開放式機櫃
傳統的理線槽也有阻礙散熱的疑慮( 一般來說都是2U, 1U是整人用^^)
買機櫃一定要請廠商把圖畫好
國產機櫃與進口機櫃的差異
精密度
柱子移動容易性
管理機制
配件多寡
高熱量時代來臨, 機房用電比例
空調 50%
設備 38%
電力傳輸及轉換 10%
照明 2%
幾個綠色的方法
正確的空調設計
高轉換效率的UPS
使用正確的機櫃
刀鋒伺服器整合
虛擬化—OS/AP/STORAGE
伺服器電源管理系統
機房空調
現代的機房是個熱源分布不平均的地方, 所以不可以用傳統的方式以坪數來計算冷房能力
使用耗電量來反推冷房能力
下吹式冷氣
兩公分的隔熱層, 至少45公分的高架地板
恆溫恆溼正壓/隔熱層/樓層高度
下吹式冷氣失敗的原因
距離太遠, 冷氣送不到
距離太遠, 熱氣回不來就吸走
地板到處開動, 冷氣都逸散掉( 最常見 )
太高密度 , 超出散熱能力
機房電力
UPS – Uninterruptible Power Supply
PDU -- Power Distribution Unit
POU -- Power Outlet Unit ( 多孔插座)
所有的電都是由機櫃反推回來
UPS
建議使用並聯式設計, 可依照需要來擴充
如果是使用Standalone 那擴充上會有問題
實際上的最愛 台達電NH系列
建議買負載顯示型POU( 可以清楚知道用電量)
有機會做正規的機房, 光纖跟銅線做上面, 電線做下面
機房的環控( 美國SENSAPHONE 網路機房監控)
溫度
溼度
電力
煙霧
漏水
入侵
網路/伺服器
UPS/空調
星期一, 9月 15, 2008
NFS nfs illegal port 問題小記
有可能會因為存取的要求Port 大於1024
產生illegal port 的錯誤存取訊息
解決的方式為
在 /etc/exports 的設定檔內加上 insecure的參數
允許 大於1024 以上的Port 連線
這邊先小記一下
以免以後忘記
奇怪的網頁綁架方式
星期一, 9月 01, 2008
利用cygwin同步Windows Server Part II
決定以 falsead 這個帳號在Windows Server 上面來當管理帳號
所以在Windows Server上面建立falsead 這個使用者並加入到administrators 群組
建立完之後嘗試以 scp 指令複製id_dsa.pub到Windows Server上面, 發現驗證失敗

以falsead這個帳號登入到Windows Server
並啟動桌面上的cygwin捷徑, 發現要執行

#mkpasswd -l > /etc/passwd
#mkgroup -l > /etc/group
來更新密碼及群組
所以進行密碼及群組的更新
更新之後, 再次嘗試連線, 發現可以連線成功, 只是找不到該目錄
這個時候再把Windows Server上面的Cygwin 視窗關掉, 重新啟動一次重新啟動之後就會發現, 這個時候的家目錄就會自動建立( 之前都是在 /cygdrive/c/Documents and Settings/home/falsead/, 那是臨時的目錄)
接下來可以利用 #mkdir /home/falsead/.ssh 或是下 #ssh 127.0.0.1建立 .ssh目錄儲存金鑰

接下來再度測試使用scp 複製金鑰及遠端下指令就成功了
星期二, 8月 26, 2008
利用cygwin 同步 Windows and Linux 伺服器
在沒有網域及NIS的狀況底下要同步帳號及密碼
又不想用LDAP
所以就在Window Server上面裝了 cygwin 來執行 Linux的SSH
********************************************************************
在Windows 伺服器上面 ( 要被同步的client)
http://www.cygwin.com/setup.exe
安裝 cygwin
選取從網路安裝, 安裝來源可以選 台大 ( ftp://ftp.ntu.edu.tw)
選取套件
- Openssh --> 從Net套件安裝
- diffutils --> 從Utils套件安裝
輸入
$chmod +r /etc/passwd
$chmod +r /etc/group
$chmod 777 /var
$ssh-host-config
詢問要建立私有權限帳號就答應他吧 ^^
設定好之後, 使用指令啟動 sshd
$net start sshd
接下來要建立個人家目錄內的 .ssh 目錄來存放金鑰
$ssh 127.0.0.1
未必要完成連線, 有這個動作就可以建立 ~/.ssh 目錄了
*******************************************************************
在Linux 伺服器上面
要建立個人家目錄內的 .ssh 目錄來存放金鑰
#ssh 127.0.0.1
未必要完成連線, 有這個動作就可以建立 ~/.ssh 目錄了
#ssh-keygen -d
連續按三下 Enter 鍵建立 DSA的金鑰
#scp ~/.ssh/id_dsa.pub administrator@Windows伺服器的IP:~/.ssh/authorized_keys
這樣以後連線就不需要密碼直接以Key 驗證
建立一個工作資料夾在 /root/lab
#mkdir /root/lab
將Windows Server 的IP 寫在 /root/lab/winserver
內容範例如下
192.168.3.131
192.168.3.134
將Linux Server 的IP 寫在 /root/lab/linuxserver
內容範例如下
192.168.3.136
編寫一個同步的 shell script
#vi syncaccount.sh
#!/bin/bash
# define windows server's ip
echo "****************************************************"
do
echo "Windows server's IP is $i"
done
for q in $( cat /root/lab/linuxserver )
do
echo "Linux server's IP is $q"
done
echo "*****************************
echo "Please select your task"
echo "1)to add user account please input --------> useradd"
echo "2)to delete user account please input -----> userdel"
echo "3)to change user's password please input --> passwd"
echo "4)to quit this script please input --------> quit"
echo "please input your choice"
#read the root's task from read
read task
case "$task" in
useradd)
echo "*****************************
echo "exec add a user account"
echo "please input user's name"
echo "*****************************
read useraddname
echo "*****************************
echo "we will add user $useraddname"
for i in $( cat /root/lab/winserver )
do
echo "windows server is $i, add user $useraddname"
ssh administrator@$i "net user $useraddname /add"
done
for q in $( cat /root/lab/linuxserver )
do
echo "Linux server's IP is $q, add user $useraddname"
ssh $q "useradd -m $useraddname"
done
;;
userdel)
echo "*****************************
echo "exec del a user account"
echo "please input user's name"
echo "*****************************
read userdelname
echo "*****************************
echo "we will delete user $userdelname"
for i in $( cat /root/lab/winserver )
do
echo "windows server is $i, del user $userdelname"
ssh administrator@$i "net user $userdelname /delete"
done
for q in $( cat /root/lab/linuxserver )
do
echo "Linux server's IP is $q, del user $userdelname"
ssh $q "userdel -r $userdelname"
done
;;
passwd)
echo "*****************************
echo "exec change user's password"
echo "please input user's name"
echo "*****************************
read userpasswdname
echo "*****************************
echo "please input user's password"
echo "*****************************
read userpasswd
echo "we will set user $userpasswdname password"
for i in $( cat /root/lab/winserver )
do
echo "windows server is $i, change user $userpasswdname password"
ssh administrator@$i "net user $userpasswdname $userpasswd"
done
for q in $( cat /root/lab/linuxserver )
do
echo "Linux server's IP is $q, change user $userpasswdname password"
ssh $q "echo $userpasswd |passwd --stdin $userpasswdname"
done
;;
quit)
exit
;;
*)
echo "you type the wrong word"
esac
執行shell script
#sh syncaccount.sh
enjoy it~~~~