他のサーバのユーザの情報を別のサーバに移植する
複数のサーバを運用していて、追加したり、OS更新したりして、ユーザの再登録が必要になった時に、全自動とは言えないけど、半自動で行う(行った)方法。
PWが初期化されるのはしょうがないものとする。
コピー元のサーバalpha、コピー先のサーバbravoとしてやる。
ユーザー一覧の取得
cat /etc/passwd
ユーザとuidとgidの一覧が出てくる。
cat /etc/passwd | grep "gid"
gidで選べば、ほしいユーザの一覧がもらえる。(grepはor,andできるのでなんとかしよう)
それを、txtファイルに流し込む。
cat /etc/passwd | grep "gid" >list.csv
データの加工
任意のエディタで":"を","に変換する。(":"を","に変換するのをパイプラインでやったほうがいい)。
excelで開いて、ユーザ名とuid,gidだけを残し、1列目からそれぞれ、ユーザ名、uid, gidで保存。何も書かなくて良いけど4列以上書く(理由は後述)。
スクリプトの作成
#!/bin/bash csvfile=hoge.csv for line in `cat ${csvfile} | grep -v ^#` do user=`echo ${line} | cut -d ',' -f 1` pass=`echo ${line} | cut -d ',' -f 1` uid=`echo ${line} | cut -d ',' -f 2` gid=`echo ${line} | cut -d ',' -f 3` eval useradd ${user} -g ${gid} -u ${uid} expect -c " spawn passwd ${user} expect \"New password:\" send -- \"${pass}\n\" expect \"Retype new password:\" send -- \"${pass}\n\" expect \"passwd: all authentication tokens updated successfully.\" send -- \"exit\n\" " done
参考というかコピペ
対話式のコマンドをスクリプト化する方法 - Qiita
このスクリプトをrootで実行すればすべてのユーザを移動できる。
カメラ用の三脚を買いました。【Mactrem 大型アルミ三脚CT62 ORENGE】
あけまして、おめでとうございます。今年もよろしくお願いします。
自分へのお年玉ということで、一眼レフ用の三脚を買いました。
結構リスキーな買い物をした、と思ったのでレビューを書きます。
C# でpair をdouble で整列【備忘録】
自作クラスPair
doubleの比較のやり方がわからないので引き算してバブルで書いていた。
扱う件数が300ぐらいになってしまい、バブルがボトルになってしまって辛かったがやり方が見つかった。良かった。
CompareToの使い方を知らなかっただけ、といえばそれまで。
ideoneっていつまで消えないのかしら…
using System; using System.Collections.Generic; public class Test { public static void Main() { var list= new List<Pair<int,double>>(); var random = new Random(); for(int i=0;i<20;i++){ list.Add( new Pair<int,double>(i+1,random.NextDouble())); } foreach(var item in list){ Console.WriteLine("{0}:{1}",item.First,item.Second); } list.Sort((a,b) => a.Second.CompareTo(b.Second)); foreach(var item in list){ Console.WriteLine("{0}:{1}",item.First,item.Second); } } } public class Pair<T, U> { public T First; public U Second; public Pair() { } public Pair(T first, U second) { this.First = first; this.Second = second; } internal object Clone() { return MemberwiseClone(); } }
WindowsでC/C++を書こう(Bash on Ubuntu & Code)[最新の情報ではない]
2018/11/23 追記
この記事は2017年5月に書かれているので、非常に情報が古いです。より新しい情報の記事を見つけたのでそちらを参照ください。
また、PureなWindowsでCが書きたい方は、こちらの記事が参考になると思うので合わせて確認ください。
追記終わり
Windowsユーザの皆さん。こんばんは。
WindowsでC/C++ (以下Cとする)を書いている皆さんに、環境どうしているか聞いたところ、2人がlinuxをブートしてると答え、1人がVisualStudioでコンパイルしてると答え、残りの一人が、ideoneでやってると答えておりました。
かくいう私も最近まで、ideoneで書いておりましたが。
WindowsでCをコンパイルしようとするとMINGWがありますが、控えめに言って導入がめんどくさいです。Macなんて端末でちょいちょいやればすぐ通りますWindowsでも同じぐらい簡単に導入できないか、考えた結果、それなりに簡単に導入できたのでご報告致します。
ゲール-シャプレイ (Gale-Shapley) アルゴリズム
詳しいことは言えないのですが、Gale-Shapleyアルゴリズムを使う日が来てしまったらしいので、それについて簡単に解説。
Gale-Shapleyアルゴリズム(以下、G-Sアルゴリズム)は、安定マッチングとして有名らしい。僕ははじめて知りました。
ペアを安定してマッチングさせるアルゴリズムで、男女のペアを例にして説明されているみたい。
- 男性優位のマッチングと女性優位のマッチングがある。(今回は男性優位)
- 参加者全員が、選好順序のリストを用意する必要がある。
手順はこう。
- 男性は、最も好きな女性に求婚する。
- 女性が独身なら、ペアが成立する。
- 女性が既婚の場合、今の相手(男性’)の方が準位が高い場合、その男性を振る。
- 女性が既婚の場合、男性の方が男性'より順位が高い場合、男性'を振り、男性と結婚する。
- これをすべての男性が既婚になるまで、繰り返す。
非常に発振しそうなアルゴリズムなんだけどO(n^2)で実行可能というからすごい。
作ってみた。正直くっそがばがばであるが、安定にマッチングできているので良いとする。
どう見ても計算量はO(n^2)である。
github.com
確かに安定にマッチしていると思う。
Windowsユーザーしか試せないので、スクショを何枚か貼っておく。
ちかれた。クズ記事でブログ更新AC